在 Visual Studio 中构建时,LoadLibrary 无法加载错误代码 126 的 dll

Posted

技术标签:

【中文标题】在 Visual Studio 中构建时,LoadLibrary 无法加载错误代码 126 的 dll【英文标题】:LoadLibrary fails to load dll with error code 126, when building in Visual Studio 【发布时间】:2012-10-04 20:50:19 【问题描述】:

此项目由一个 .cpp 文件组成,该文件调用 LoadLibrary() 来加载 dll 文件。

如果我通过 Microsoft Visual Studio 2012 命令提示符运行以下命令会发生什么:

cl /nologo Test.cpp

一切正常。

另一方面,如果我启动一个简单的 Visual C++ 项目,添加文件并在那里编译它,LoadLibrary() 调用失败,代码 126:找不到指定的模块。 em>

我从命令行构建的 .exe 是 Visual Studio 中构建的 .exe 的两倍多。所以我想有一些静态链接正在进行。

.dll 文件很好,它与 .exe 文件在同一目录中。

【问题讨论】:

【参考方案1】:

我想通了。

cl 命令默认使用多字节字符集。在 Visual Studio 中设置的新项目配置为 unicode。

【讨论】:

非常感谢您的提示。我必须删除定义 UNICODE 和 _UNICODE 的标准项目设置,以使其在预烘焙的 VS 2013 express 桌面应用程序中工作。因此,如果您有任何 /D "UNICODE" 和 /D "_UNICODE" 编译器标志,并且遇到臭名昭著的错误 126,请摆脱它们!【参考方案2】:

如果 Loadlibrary 函数失败并出现错误 126 这清楚地表明它无法找到图书馆。 因此您可以通过在 Loadlibrary 的参数中应用完整路径来检查此功能。 如果它有效,则在系统环境变量的 PATH 变量中设置该路径。 因为 Loadlibrary api 首先找到该完整路径,如果它无法在该路径中找到该库,则它会在系统标准 PATH 中搜索它。

【讨论】:

【参考方案3】:

请问你的操作系统是 64 位的吗?

我在win7(64位)上遇到过这种情况,但是在VS、photoshop(64位)、matlab-2011a(64位)上没有。提示相同:Loadlibrary failed with error 126 ...

据我所知,“他们缺少一个对其功能至关重要的注册表项。具体来说,每当应用程序请求 OpenGL 访问时,AMD 的 atig6pxx.dll 就会启动。然后它会窥视 HKLM\SYSTEM\CurrentControlSet\Control\Class4d36e968-e325-11ce-bfc1-08002be10318\0000 并加载 OpenGL 组件,如OpenGLVendorName(64 位)或 OpenGLVendorNameWow(32 位)。”

你可以参考这个博客(enter link description here),它给出了解决方案。我试过了,它成功了。或者你可以参考这个论坛(enter link description here)。

希望它能解决你的问题,祝你好运:)

【讨论】:

以上是关于在 Visual Studio 中构建时,LoadLibrary 无法加载错误代码 126 的 dll的主要内容,如果未能解决你的问题,请参考以下文章

构建解决方案时未构建 Visual Studio 特定项目

构建时没有在 Visual Studio 2008 Express 中编译的 dll

在 Visual Studio 2013 中编译失败时如何跳过构建后事件

如何修复“缺少根元素”。在进行 Visual Studio (VS) 构建时?

在 Visual Studio 中构建时,LoadLibrary 无法加载错误代码 126 的 dll

如何确定为啥 Visual Studio 在构建解决方案时可能会跳过项目