我正在尝试实现一个在C#窗体应用程序中使用英特尔性能原语的C++动态链接库(由我自己创建)。我得到一个"DLL找不到异常“,当我试图运行该程序。在本站点的其他帖子中提出的一个可能的原因是,必须引用依赖的DLL,事实上,在下载DpendencyWalker后,我发现我的DLL使用"IPPS-7.0.DLL“。
我的问题是我不清楚如何引用这些依赖的DLL。我已经将包含IPPS-7.0.DLL的文件夹添加到引用路径中,并添加了对"IntelCppOptPkg“和"IntelLibOptPgk”程序集的引用,但这并没有解决问题。
那么,我认为这就是问题所在,对吗?如果是这样,如何在托管代码中引用特定的DLL?
谢谢。
发布于 2011-09-07 03:32:08
你不需要引用它们,它们不是.NET程序集。您只需确保将DLL复制到您的build目录。最简单的方法是使用Project + Add Existing Item,从复制的位置选择DLL。然后选择添加的文件,并在Properties窗口中设置Build Action = Content,Copy to Output Directory = Copy if newer。顺便说一句,在源代码管理中签入DLL通常是一个好主意。
发布于 2011-09-07 03:28:27
托管代码不能像引用托管程序集一样引用非托管dll。托管引用实际上更改了程序集的元数据:
编译器在生成时在程序集清单的元数据中记录静态引用。..。引用程序集的首选方法是使用完整引用,包括程序集名称、版本、区域性和公钥标记(如果存在)。
原生.NET根本没有与之关联的dlls元数据。必须在构建后步骤或部署过程中手动复制它们。有一个workaround,但我不认为它会工作,如果你的托管应用是平台独立的(任何CPU),并且你有x86和x64版本的非托管dll。
https://stackoverflow.com/questions/7324881
复制相似问题