为了配合C++和Qt开发,安装MinGW方便动态链接库DLL生成和导出。MinGW-W64都是用于Windows平台的轻量级GNU工具链,用于开发和编译C和C++程序。包括 GCC (GNU Compiler Collection) 编译器套件,以及一些其他工具和库。
首先是下载问题,windows 64位系统下载建议:x86_64-win32-seh。然后添加系统变量:在系统变量中配置路径。最后可通过cmd 键入gcc -v查看是否安装成功和其版本。
创建dll:
首先创建一个空项目,创建头文件导出类或函数声明。
fft_dll.h
#ifdef BUILD_CAL_DLL // 如果定义了构建,表示生成xxx.dll
#define EXPORT __declspec(dllexport)
#else // 否则表示引用xxx.dll
#define EXPORT __declspec(dllimport)
#endif
/*接口*/
extern "C" {
EXPORT int addInt(int, int);
EXPORT int subInt(int, int);
}
其中类的导入实例 fft_dll.h
#pragma once
#ifdef FFT_EXPORTS // 如果定义了构建,表示生成xxx.dll
#define FFTAPI __declspec(dllexport)
#else // 否则表示引用xxx.dll
#define FFTAPI __declspec(dllimport)
#endif
/*接口*/
#include <iostream>
#include <cmath>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
// 此处声明导入类
extern "C" {
class FFTAPI my_fft; //要导入的类
}
// 定义类 My_fft
class my_fft
{
public:
...
private:
...
};
其次创建 fft_dll.cpp文件,定义函数。
#define BUILD_CAL_DLL // 定义xxx.dll构建
#include "cal.h" // 引用xxx.h头文件
/*接口函数*/
int addInt(int a, int b) {
return a + b;
}
int subInt(int a, int b) {
return a - b;
}
最后是通过在项目文件中cmd中键入:
g++ -shared -Wl,--kill-at,--output-def,fft_dll.def,--out-implib,fft_dll.a -o fft_dll.dll fft_dll.cpp
即可生成,a .dll .def 等文件。
注意:多余空格会报错!!!