这个项目由一个.cpp文件组成,该文件调用LoadLibrary()来加载一个dll文件。
如果我通过 Microsoft Visual Studio 2012命令提示符运行以下内容,会发生什么:
cl /nologo Test.cpp
一切正常。
另一方面,如果我启动一个简单的Visual C ++项目,添加该文件并在那里进行编译,LoadLibrary()调用将失败并显示代码126:找不到指定的模块。
我从命令行构建的.exe的大小是Visual Studio中构建的大小的两倍多。所以我猜有一些静态链接正在进行中。
.dll文件很好,它与.exe文件位于同一目录中。
答案 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)。
我希望它能解决你的问题,祝你好运:)