欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++ 中 对dll二次封装时,加载第三方库dll时 LoadLibrary 时错误代码126

程序员文章站 2022-07-14 14:40:34
...

前提:  第三方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,

C++ 中 对dll二次封装时,加载第三方库dll时 LoadLibrary 时错误代码126

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