【发布时间】:2016-08-23 12:05:04
【问题描述】:
我的 C++ DLL(从 C# 应用程序调用)在 Debug 版本(Debug 中的主 C# 应用程序)下工作正常,但发布版本(Release 中的主 C# 应用程序)给出 找不到指定的过程。 (来自 HRESULT 的异常:0x8007007F)] System.DllNotFoundException:无法加载 DLL 'D:\TestBluRay.dll':找不到指定的过程。 (HRESULT 异常:0x8007007F) 错误。我已经验证了所有项目设置,并且这些设置对于调试和发布似乎都是相同的。知道为什么这仅适用于发布版本吗?
【问题讨论】:
-
您的意思是 (1) 使用调试版本的 C++ DLL 失败而使用发布版本成功,还是 (2) 使用调试版本的 C# 应用程序失败而使用发布版本成功?
-
发行版是否有可能由于某种原因实际上看到的是旧版本的 DLL?例如,由于不小心将 DLL 文件仅复制到调试版本的文件夹中? (一个容易犯的错误......)
-
同意以上评论。具体来说,我会检查您引用的 DLL 是否存在于 bin/debug 文件夹中,它也是 bin/release 文件夹中的那个的完全副本。最有可能的是,它不是,或者它完全丢失了。另外,请编辑您的问题并向我们显示完整的错误,如图所示。 ;)
-
有时项目依赖项不会重建所有内容。我通常会删除强制重建的 bin 文件夹。您可以查看.exe文件的日期戳,看它是否已更新。以0x8开头的错误表示指针无效。dll需要在release和debug文件夹中。通常,当您添加引用时,编译会自动将 dll 从源位置复制到调试/发布文件夹。如果您执行重建,它会清除调试/发布中的所有文件,包括 dll。您永远不应该手动将添加文件放入 bin 文件夹中,以免它们被删除。