【问题标题】:DllNotFoundException for C++ library from .NET app on some computers某些计算机上来自 .NET 应用程序的 C++ 库的 DllNotFoundException
【发布时间】:2015-11-19 20:48:19
【问题描述】:

我们有 .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 redist;

  • 以管理员身份运行。

结果是一样的。

有什么想法吗,伙计们?

提前致谢!

【问题讨论】:

  • 所有系统都是一样的,32位还是64位?
  • 显然你需要问问那些机器的主人,他们可以给你一个准确的答案。要求他们运行 SysInternals 的 ProcMon 并向您发送日志文件。现在你有了一个事实而不是猜测。

标签: c++ .net windows-10 dllimport dllnotfoundexception


【解决方案1】:

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

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

您可以使用 Dependency Viewer 之类的工具来检查依赖关系,但实际上最好的方法是访问源代码。如果是第三方库,则可以是库的文档,如果您自己构建了 DLL,则可以直接从源代码和编译选项中获取。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    • 2010-09-13
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多