5

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

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

cl /nologo Test.cpp

一切正常。

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

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

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

4

3 回答 3

7

我想到了。

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

于 2012-10-06T15:10:23.227 回答
2

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

于 2012-10-08T06:13:19.167 回答
0

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

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

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

可以参考这篇博客(<a href="http://www.withinwindows.com/2012/03/18/quick-fix-for-amds-opengl-on-windows-8/" rel="nofollow" >在此处输入链接描述),它给出了解决方案。我试过了,它工作。或者你可以参考这个论坛(在这里输入链接描述)。</p>

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

于 2012-10-28T16:50:18.683 回答