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

时间:2012-10-04 20:50:19

标签: visual-studio visual-c++

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

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

cl /nologo Test.cpp

一切正常。

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

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

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

3 个答案:

答案 0 :(得分:7)

我明白了。

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

答案 1 :(得分:2)

如果Loadlibrary函数失败,错误126 这清楚地表明它无法找到图书馆。 所以你可以通过在Loadlibrary的参数中应用完整路径来检查这个功能。 如果它工作,那么在系统环境变量的PATH变量中设置该路径。 因为Loadlibrary api首先找到完整路径,如果它无法在该路径中找到该库,那么它将在系统标准路径中搜索它。

答案 2 :(得分:0)

你的操作系统是64位吗?

我在win7(64位)上遇到过这种情况,但在VS,photoshop(64位),matlab-2011a(64位)中没有遇到过这种情况。提示是相同的:Loadlibrary失败,错误126 ...

据我所知,“他们错过了对其功能至关重要的注册表项。具体来说,每当应用程序请求OpenGL访问时,AMD的atig6pxx.dll就会启动。然后在HKLM \ SYSTEM \ CurrentControlSet \ Control \ Class {4d36e968-e325-11ce-bfc1-08002be10318} \ 0000内查看并加载OpenGL组件,如下所示: OpenGLVendorName(64位)或OpenGLVendorNameWow(32位)。“

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

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