2011-09-06 165 views
1

我试图实现一个C++ DLL(我自己创建的)在C#表单应用程序中使用英特尔性能基元。当我尝试运行该程序时,出现“DLL未找到异常”。在这个网站的其他帖子中提出的一个可能的原因是,有依赖的DLL必须被引用,事实上在下载DpendencyWalker后,我发现我的DLL使用“IPPS-7.0.DLL”。DLL未找到:引用依赖的DLL

我的问题是,我不清楚如何引用这些依赖的DLL。我已将IPPS-7.0.DLL包含文件夹添加到引用路径以及添加了对“IntelCppOptPkg”和“IntelLibOptPgk”程序集的引用,但这并未解决问题。

所以,我相信这是问题的正确吗?如果是这样,在托管代码中如何引用dependent DLL?

谢谢。

回答

1

托管代码无法像引用托管程序集一样引用非托管dll。在构建时在程序集清单的元数据

编译器记录静态 引用:托管引用真正改变你的程序集的元数据。 ... 引用程序集的首选方法是使用包含程序集名称,版本,区域性和公钥令牌 (如果存在)的完整引用 。

原生dll根本没有这个.NET元数据与他们关联。必须在Post Build步骤或部署期间手动复制它们。有一个workaround,但我不认为它会工作,如果您的托管应用程序是独立于平台(任何CPU),并且您有x86和x64版本的非托管dll。

2

你不引用它们,它们不是.NET程序集。您只需确保将DLL复制到您的构建目录。最简单的方法就是使用Project + Add Existing Item,从复制的任何位置选择DLL。然后选择添加的文件,并在属性窗口中设置生成操作=内容,复制到输出目录=复制,如果更新。检入源代码管理中的DLL通常是一个好主意。

+1

虽然你在它检查pdb的。 –