某些计算机上.NET应用程序中C++库的DllNotFoundException

DllNotFoundException for C++ library from .NET app on some computers

本文关键字:C++ 库的 DllNotFoundException 应用程序 NET 计算机      更新时间:2023-10-16

我们有一个.NET应用程序,它通过[DllImport]使用C++库。除了3台计算机外,它在许多计算机(成千上万的客户)上都能正常工作。它们都安装了Windows 10(其他Windows 10平台运行良好)。

例外情况是:

System.DllNotFoundException: Unable to load DLL 'Helper.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

此dll与主可执行文件放在同一文件夹中。已经做了什么来修复:

  • 将DLL放入system32文件夹;

  • 安装了不同版本的vc-rest;

  • 以管理员身份运行

结果是一样的。

有什么想法吗,伙计们?

提前感谢!

不要将DLL放在系统目录中。你不应该把文件放在那里。将DLL与可执行文件放在同一目录中。

如果这样做,系统报告DllNotFoundException,则意味着找不到DLL的某个依赖项。接下来,您需要找出依赖项是什么,并确保它们都得到满足。

您可以使用像依赖关系查看器这样的工具来检查依赖关系,但实际上最好的方法是转到源代码。如果是第三方库,则提供库的文档;如果您自己构建了DLL,则直接从源代码和编译选项获取文档。