LoadLibrary returns 126 在运行时加载 dll 时
LoadLibrary returns 126 when loading a dll in runtime
我有 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.");
}
错误代码告诉您找不到模块。或者:
- 找不到您要加载的库。
- 可以找到该库,但如果找不到它的依赖项(通常是 MSVC 运行时库)。
我现在已经找到根本原因了。我忘了告诉我在调试时我在我的应用程序进程中附加了dll。
该应用程序要求 Soft.FXX.dll
应与其位于同一目录中。我真的认为将整个 dll 路径提供给 LoadLibrary
函数就足够了。
我有 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.");
}
错误代码告诉您找不到模块。或者:
- 找不到您要加载的库。
- 可以找到该库,但如果找不到它的依赖项(通常是 MSVC 运行时库)。
我现在已经找到根本原因了。我忘了告诉我在调试时我在我的应用程序进程中附加了dll。
该应用程序要求 Soft.FXX.dll
应与其位于同一目录中。我真的认为将整个 dll 路径提供给 LoadLibrary
函数就足够了。