Qt提供了一个 QLibrary 类供显示调用。下面给出一个完整的例子:
testDLLdll为自定义的dll文件,将其复制到程序的输出目录下就可以调用。
#include <QApplication>
#include <QLibrary>
#include <QDebug>
#include <QMessageBox>
typedef int (Fun)(int,int); //定义函数指针,以备调用
int main(int argc,char argv)
{
QApplication app(argc,argv);
QLibrary mylib("testDLLdll"); //声明所用到的dll文件
int result;
if (mylibload()) //判断是否正确加载
{
QMessageBox::information(NULL,"OK","DLL load is OK!");
Fun open=(Fun)mylibresolve("add"); //援引 add() 函数
if (open) //是否成功连接上 add() 函数
{
QMessageBox::information(NULL,"OK","Link to Function is OK!");
result=open(5,6); //这里函数指针调用dll中的 add() 函数
qDebug()<<result;
}
else
QMessageBox::information(NULL,"NO","Linke to Function is not OK!!!!");
}
else
{
QMessageBox::information(NULL,"NO","DLL is not loaded!");
return 0; //加载失败则退出
}
}
d出窗口说加载dll格式结尾的文件出错,999999%是因为你之前卸载某些程序不彻底造成的,在注册表里还有它的信息,所以还在加载。写下以下方法,你认真做好以下3步后,就可以解决这个问题了。
第一步:用超级兔子魔法设置或Windows优化大师扫描一下注册表,它会自动的挑出无效的项,删除它们(如果找不到,请继续以下步骤)。
第二步:把C:\WINDOWS\Prefetch文件夹下的所有文件都删除。
第三步:开始→运行→输入“regedit”→确定→打开注册表编辑器,找到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run右边窗口删除含某某dll的相应键,再找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run在右边删除含某某dll的相应键。最后,点击注册表编辑器菜单栏的编辑→查找→输入某某dll→搜索→删除查找到的对应项目,可能不止一个,查找下一个再删。(如果找不到,继续做以下步骤)
第三步:点击开始菜单→运行→输入msconfig→确定→打开系统配置实用程序→“启动”项→在启动项目里找到相应的dll并其前边的勾去掉(如果你不会,所有启动项只保留ctfmon选中),然后确定应用,这时会提示重启电脑。当你重启电脑进入桌面时会d出提示窗口,这时你在左下角选上不再提示勾勾,就可以了
很高兴回答你的问题,最后,还不会,可以加我问我,谢谢
找另一台的电脑上去复制下这个缺失的文件。
可以尝试使用腾讯电脑管家来修复缺失DLL文件
1、打开腾讯电脑管家
2、电脑诊所
3、软件问题
4、丢失Dll 文件
5、一键修复
6、完成
如果还是解决不了,去下一个文件直接复制进去就能搞定了
mfc的对话框资源,不过一些对窗口的配置,然后使用的时候用这些配置生成一个窗口。最后,还是调用的CreateWindow。也就是窗口外观上的定义。
你完全可以使用C#写一个外观一样的窗口而没必要一定使用mfc里的资源。
一定要这样做也行。那你调用mfc的dll,然后调用dll中的方法来使用资源,而不是在C#里直接使用资源。
以上就是关于高分求教,Qt如何加载调用win32程序编译的DLL全部的内容,包括:高分求教,Qt如何加载调用win32程序编译的DLL、打开超级旋风时提示“加载DLL失败,程序退出”、怎么解决vs程序加载过多dll文件的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)