C++ 中 对dll二次封装时,加载第三方库dll时 LoadLibrary 时错误代码126
前提: 第三方dll名为 A.dll 我自己对A.dll又重新封装了一个B.dll ,然后使用C程序进行测试,发现在B.dll中有加载A.dll的地方出错,错误代码为126.
具体代码如下:
HMODULE m_hModule;
SetLastError(0);
//m_hModule = LoadLibrary(L"..\\Debug\\A.dll");//是ok的,需要debug下放opencv的dll
m_hModule = LoadLibrary(L"E:\\wokspace\\excercise\\MFC\\test_dll\\Debug\\A.dll");
DWORD a = GetLastError();
将A.dll 与 B.dll均放在了C程序的Debug文件夹下了,发现m_hModule为NULL模式。
查错步骤:
1. LoadLibrary 路径使用绝对路径、相对路径都不行。路径没有问题。
绝对路径为: L"E://wokspace//excercise//MFC//test_dll//Debug//A.dll" 或者 L"E:\\wokspace\\excercise\\MFC\\test_dll\\Debug//A.dll"
相对路径为: L"..//Debug//A.dll" 或者 L"..\\Debug\\A.dll"
2. 使用dependcy查看A.dll中是否关联了其他的dll。
发现少了关于opencv的dll,
3.将关于opencv的dll放在debug路径下,使用相对路径或者绝对路径时,都是没有问题的。
小结: 缺少了A.dll 关联的其他dll ,将A.dll中调用的dll放入到Debug文件夹下就可以了。
参考:https://www.pianshen.com/article/39641110309/
参考: https://blog.csdn.net/wanshouyuan/article/details/90445675
上一篇: 预处理练习之最大正方形
下一篇: Hive基础知识