【问题标题】:Error: Unable to load DLL '.dll' : The specified module could not be found. (Exception from HRESULT: 0x8007007E) - What is this error?错误:无法加载 DLL '.dll':找不到指定的模块。 (来自 HRESULT 的异常:0x8007007E) - 这是什么错误?
【发布时间】:2012-10-05 15:26:42
【问题描述】:

情况:

我正在尝试运行CharLS JPEG-LS Compression algorithm implementation

站点中有关于在哪里可以下载 C# VS 2010 解决方案的源代码。在解决方案中有 2 个 C# 类库项目、1 个非托管 VC++ 项目和 1 个 C# 控制台应用程序。控制台应用程序调用类库之一,“使用 CharLS;”,并且该特定库引用非托管 VC++ 项目。控制台应用程序在调试模式下完美运行。

问题:

但是当我为“Release”编译控制台应用程序并运行 .exe(可执行文件)时,当在此过程中调用特定函数时,它给了我这个错误:

错误:无法加载 DLL 'CharLS.dll':指定的模块可以 找不到。 (HRESULT 异常:0x8007007E)

我也尝试创建另一个项目并从那里引用类库,但我得到了同样的错误。

我已尝试通过网络阅读其他解决方案,但它们没有帮助我。

【问题讨论】:

  • 找不到 CharLS.dll 依赖项之一 - 可能是因为更改了当前目录。在 Dependency walker dependencywalker.com中学习 Dll 依赖项
  • 你检查过你的开发机器的路径上是否存在CharLS.dll这个文件吗?如果是,则将其与发布软件一起部署(也在路径上)。或者,它是一个注册文件(regsvr32)吗?如果是这样,部署它并注册它。
  • 您从未提到“并且我确保将 DLL 复制到 bin\Debug 目录”。所以先从那里开始。 SysInternals 的 ProcMon 实用程序可以显示可能缺少的其他 DLL。

标签: c# .net reference error-handling


【解决方案1】:

此错误的一些原因可能是:

  1. 您为“DllImport”属性的“EntryPoint”属性提供的名称与您从本机组件导出的函数不匹配。

  2. 另一个原因可能是缺少 dll 本身/或其任何依赖项(使用依赖遍历器和检查)

  3. 第三个原因可能是调试/发布版本不匹配。

【讨论】:

  • 感谢(和 +1)调试/发布版本不匹配。我正在测试一个项目部署,并没有费心将解决方案配置切换到“发布”。
【解决方案2】:

在以发布模式运行之前,您是否(重新)构建了项目?看起来你没有,并且发布输出不包含这样的库。还是检查一下吧。

【讨论】:

  • 我已经无数次尝试(重新)构建。先生,同样的错误。
  • @user919789 您是否尝试结合关闭和重新打开 Visual Studio 对整个解决方案进行清理和重建?它通常会为我修复错误。
【解决方案3】:

确保它确实已在服务器上注册。您是否也将应用程序池(假设为 IIS7+)设置为允许 32 位进程?

【讨论】:

    猜你喜欢
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多