,Qt怎么加载调用win32程序编译的DLL
高分求教,Qt如何加载调用win32程序编译的DLL?现有PlotDll.DLL、PlotDll.lib、Chart.h三个文件。Chart.h中包含
高分求教,Qt如何加载调用win32程序编译的DLL?
现有PlotDll.DLL、PlotDll.lib、Chart.h三个文件。Chart.h中包含两个类,
一个为CChart,一个为CChartWnd;现在我已经把这三个文件放到了相关的文件夹下,并且
在需要加载DLL的Qt类中添加了头文件:
#include "Chart.h"
#pragma comment(lib,"PlotDll.lib")
现在我在Qt的这个类中定义CChartWnd m_chartWnd;但是编译出现错误,找不到构造
函数和析构函数的定义,求教我该如何在Qt中定义这个对象,后续操作我需要用这个m_chartWnd
去调用DLL中的函数,求指教!
[解决办法]
可能是 .lib 的格式和你的编译器不兼容的,不是同一种编译器编出来的。
[解决办法]
Qt 也使用VC编译器吗?
Qt5 ?
Qt4.8 ?
[解决办法]
你自己的信息没有说清楚,你的QT版本,安装的SDK还是QT LIB,编译环境,VS+ADD IN还是QT CREATOR?如果是用的VS,那非常简单,只不过是最基本的DLL调用,QT也相当于是VS中的一个库,简单来说,就是你用VS写代码,有一个库A,一个库B,就是在库B中调用库A的问题,找不到实现就是LIB没有找对,没有添加LIB库。
[解决办法]
关键是在于编译器吧.你用QtCreator 只是当IDE,你安装qt版本是mingw还是VS?如果你的dll是vc编译的,而qt使用mingw的编译器,那不能链接就是正常。C++没有ABI兼容的标准,要使用同一编译器
[解决办法]
方法:
1。去QT creator里面把你的project属性中的编译器选项改成vc的,如果没有,就去qt creator的option中build&run中的tool chains手动添加
2。下载vs addin,直接使用visual studio 当ide
[解决办法]我觉得是环境变量配置原因
[解决办法]如果是qtcreator的话,直接在pro文件上这样写就行
LIBS += -Lc:/testdir/lib -lPlotDll
INCLUDEPATH += $$c:/testdir/include
DEPENDPATH += $$c:/testdir/include
c:/testdir/lib是你的lib的路径;
c:/testdir/include是你的头文件的路径;
具体路径可以根据工程的目录写相对路径,如LIBS += -L$$PWD/lib -lPlotDll就是你的工程目录下的lib文件夹,不知道对你有没有帮助
[解决办法]先在pro文件中加入一行:
LIBS += -L ./ -lPlotDll
然后将PlotDll.dll和PlotDll.lib拷贝到工程build目录下(就是含有Makefile的目录),再重新编译一次,应该就可以了。
[解决办法]我的建议也是这样。g++/minGW不支持#pragma comment()预编译指令。
[解决办法]明显是编译器不兼容造成的。
如果可以重编PlotDll,那就用你现在的编译器重编译一下。
不行的话,你用一个可以和PlotDll编译的编译器封装成一个普通的dll,用静态编译,用接口导出去给新的编译器使用。这样也不是100%完美,因为有可能里面的汇编代码处理内存方式的不一样导致程序崩溃。
两个不同编译器编出来的东西想混用有点难度。