我有MFC dll文件,该文件试图在运行时使用LoadLibrary
函数加载另一个dll。下面的代码在带有MBCS字符集的控制台应用程序中可以正常工作。但是,我在MFC dll中使用的相同代码无法正常工作。
GetLastError
总是尝试返回126
,即Module NOT Found
。我的MFC dll具有MBCS字符集。我什至尝试将dll放在工作目录中,尝试使用dll名称访问它,但仍然找不到它。我花了数小时寻找解决方案,但没有解决我的问题。
我尝试使用Dependency Walker查找dll,并且已很好加载。有人知道吗?这是我的示例代码片段:
HINSTANCE dllGetproc = LoadLibrary((LPCSTR)"C:\\Proj\\dev\\Soft\\Soft.FXX.dll");
if (!dllGetproc ) {
Format(var,"Could not load the dynamic library error = %d", GetLastError());
Log(var);
}
else {
Log("Loaded successfully.");
}
错误代码告诉您找不到模块。要么:
我已经找到了根本原因。我忘了告诉我在调试时将dll附加到应用程序进程中。应用程序要求Soft.FXX.dll
应该和它在同一目录中。我真的以为将整个dll路径提供给LoadLibrary
函数就足够了。是不是?