1、Qt新建库工程DemoDll
其中DemoDll头文件:
#ifndef DEMODLL_H
#define DEMODLL_H
#include "demodll_global.h"
/* 下面这段class没啥用,可以直接删掉
class DEMODLLSHARED_EXPORT DemoDll
{
public:
DemoDll();
}; */
extern "C" DEMODLLSHARED_EXPORT int Add(int, int);
#endif // DEMODLL_H
DemoDll源文件:
#include "demodll.h"
/* 构造函数也没啥用,直接删掉
DemoDll::DemoDll()
{
} */
int Add(int a, int b)
{
return a+b;
}
编译生成DemoDll.dll;Linux编译后生成的是libDemoDll.so
2、调用编译生成的库头文件定义调用接口#include ...#include .........//定义接口typedef int ( *libAdd )(int,int);源文件调用关键代码(Window平台测试)#ifdef Q_OS_WINlibDll.setFileName("DemoDll.dll"); // libDll为QLibrary类型#endif#ifdef Q_OS_LINUXlibDll.setFileName("libDemoDll.so");#endif#ifdef Q_OS_MAClibDll.setFileName("libDemoDll.dylib");#endifif(libDll.load()){libAdd Add12=(libAdd)libDll.resolve("Add"); //resolve后面的参数务必和库定义的方法名一致if(Add12){int ret = Add12(2, 3); //调用DLL Add函数}}
本文通过一个简单的加法函数示例介绍了如何使用Qt创建和调用动态链接库(DLL)。包括Windows平台下dll文件的创建及跨平台(Linux/macOS)调用方法。
340

被折叠的 条评论
为什么被折叠?



