繁体   English   中英

找不到DLL:引用依赖的DLL

[英]DLL Not found: referencing dependent DLLs

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

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

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

谢谢。

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

托管代码不能像引用托管程序集一样引用非托管dll。 托管引用实际上会更改程序集的元数据:

编译器在生成时将静态引用记录在程序集清单的元数据中。 ...引用程序集的首选方法是使用完整引用,包括程序集名称,版本,区域性和公共密钥令牌(如果存在)。

本机dll根本没有与此关联的.NET元数据。 必须在构建后步骤或部署期间手动复制它们。 有一种解决方法,但是如果您的托管应用程序是平台无关的(任何CPU),并且您具有x86和x64版本的非托管dll,则我认为它不会起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM