[LoadLibrary在运行时加载dll时返回126

问题描述 投票:0回答:2

我有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.");
}
c++ visual-studio winapi dll mfc
2个回答
0
投票

错误代码告诉您找不到模块。要么:

  1. 找不到您要加载的库。
  2. 可以找到该库,但是如果找不到其依赖项(通常是MSVC运行时库),则为一个。

0
投票

我已经找到了根本原因。我忘了告诉我在调试时将dll附加到应用程序进程中。应用程序要求Soft.FXX.dll应该和它在同一目录中。我真的以为将整个dll路径提供给LoadLibrary函数就足够了。是不是?

© www.soinside.com 2019 - 2024. All rights reserved.