问问题描述
答精选答案

1.文件路径不对
2.dll里有全局变量出事化失败或dllmain函数返回false。
我们这个程序里用的是绝对路径,原因1是不成立的。分析dll的代码,发现原因2也是不成立的。
追踪到这里就没思路解决问题了,后来发现加载dll可以用loadlibrary,loadlibraryex,afxloadlibrary。试了下其他两个函数,loadlibraryex现象一样,afxloadlibrary会抛异常。查了资料,afxloadlibrary是用来加载mfc扩展dll的,不同的一点是在加载dll前会处理线程同步。好像初始化也没有线程同步的问题啊。不理解。
再仔细看代码,发现dllmain所在的类文件里有 #include <afxdllx.h> , 不理解这个头文件有什么作用,屏蔽后编译没影响,将dll放在必现的场景下测试,不再出现加载失败的问题。
本文来自作者[龙行天下20052009悟空问答]投稿,不代表公众科技网立场,如若转载,请注明出处:https://www.cpst.net.cn/changshijingxuan/202609/2426498.html
评论列表(4条)
我是公众科技网的签约作者“龙行天下20052009悟空问答”!
希望本篇文章《loadlibrary失败的解决方法》能对你有所帮助!
本站[公众科技网]内容主要涵盖:教育咨询,知识百科
本文概览:1.文件路径不对2.dll里有全局变量出事化失败或dllmain函数返回false。我们这个程序里用的是绝对路径,原因1是不成立的。分析dll的代码,发现原因2也是不成立的。追踪到这里就没思路解决问题了,后来发现加载dll可以用loadlibrary,loadlibraryex,afxloadlibrary。试了下其他两个函数,loadlibraryex现象一样,afxloadlibrary会抛异常。查了资料,afxloadlibrary是用来加载mfc扩展dll的,不同的一点是在加载dll前会处理线程同