loadlibrary失败的解决方法

loadlibrary失败的解决方法

1、文件路径不对

2、dll里有全局变量出事化失败或dllmain函数返回false。

我们这个程序里用的是绝对路径,原因1是不成立的。分析dll的代码,发现原因2也是不成立的。

追踪到这里就没思路解决问题了,后来发现加载dll可以用loadlibrary,loadlibraryex,afxloadlibrary。试了下其他两个函数,loadlibraryex现象一样,afxloadlibrary会抛异常。查了资料,afxloadlibrary是用来加载mfc扩展dll的,不同的一点是 在加载dll前会处理线程同步。好像初始化也没有线程同步的问题啊。不理解。

再仔细看代码,发现dllmain所在的类文件里有 #include <afxdllx.h> , 不理解这个头文件有什么作用,屏蔽后编译没影响,将dll放在必现的场景下测试,不再出现加载失败的问题。