QT调用MFCDLL

方式一:隐式调用
int nSum = TestAddFunction(1, 2);
qDebug() << nSum;
测试成功!
注意:需要.dll文件、.lib文件、.h文件,
在.pro文件中添加lib库路径和文件
LIBS+= -L../***/***/***/lib -l***
-L后面跟的是lib库路径
-l后面跟的是lib文件名,不要后缀.lib
因为库函数是以C来编译和链接的,所以在包含头文件的时候注意要加extern "C",以C语言来编译和链接。
extern "C"
{
#include "InterfaceFunction.h"
}
所有用到的dll放在exe同目录下。


方式二:显示调用
QLibrary lib("DUHardware_D.dll");
if (lib.load()) {
    qDebug() << "load ok!";
} else {
    qDebug() << "load failed!";
}
typedef int (*TestAddFunction)(int, int);
TestAddFunction fpAdd = (TestAddFunction)lib.resolve("TestAddFunction");
int nSum = fpAdd(1, 2);
qDebug() << nSum;
测试成功!
注意:只需要dll文件,如果dll用到了其他dll,所有dll都需要放在exe同目录下,不然lib.load()失败。

你可能感兴趣的:(qt)