【发布时间】:2020-05-08 14:04:55
【问题描述】:
我的 MFC dll 文件试图在运行时使用 LoadLibrary 函数加载另一个 dll。
下面的代码在具有 MBCS 字符集的控制台应用程序中运行良好。
但是,我在 MFC dll 中使用的相同代码不起作用。
GetLastError 一直在尝试返回126,即Module NOT Found。
我的 MFC dll 具有 MBCS 字符集。
我什至尝试将 dll 放在工作目录中,尝试使用 dll 名称访问它,但仍然找不到。
我花了几个小时寻找解决方案,但没有解决我的问题。
我尝试使用 Dependency Walker 查找 dll,并且加载正常。
有人有想法吗?
这是我的示例 sn-p 代码:
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.");
}
【问题讨论】:
-
请不要只发布代码 sn-ps。发布正确的minimal reproducible examples,其他人可以实际运行并使用它来复制问题。通常,在创建最小示例时,您甚至会自己发现错误。
-
你应该删除那个
(LPCSTR)。我不确定你为什么要添加它,但它没有任何作用。如果该值不是LPCSTR,那么您的演员只会用于抑制编译器消息。这真的无济于事。 -
如果你调用
LoadLibraryA()会发生什么? -
@phi OP 正在调用
LoadLibraryA。 -
@DecryptDcode 如上一条评论所述,删除
(LPCSTR)演员表。你的代码编译了吗?是的,我们知道您声称您的设置是 MBCS,但没有真正的证据。证明将是,如果您删除该演员表并获得干净的编译。
标签: c++ visual-studio winapi dll mfc