// dll_test.hpp
#ifdef DLL_TEST
#define MY_API _declspec(ddllexport) // 当头文件作为DLL工程编译时(会用到DLL工程中的 .cpp 文件),设为导出。
#ELSE
#define MY_API _declspec(dllimport) // 当DLL被其它工程调用时(不会用到DLL工程中的 .cpp 文件),设为导入。
#endif
//需要被外界调用的类(父类)
class MY_API my_class
{
public:
// 类成员变量
int x;
// 类方法
void func(int x);
};
// 函数,真正的函数名由编译器决定
int MY_API add(int x, int y);
// 函数,函数名不会被改变
extern "C" MY_API int add(int x, int y);
// dll_test.cpp
#define DLL_TEST // 定义宏,使编译DLL工程时为导出 (结合头文件看)
#include
#include "dll_test.hpp"
using namespace std;
// 类方法实现
void MY_API my_class::func(int x)
{
cout << x << endl;
}
// 函数实现
int MY_API add(int x, int y)
{
return x+y;
}
# 导入 ctypes 库
from ctypes import *
# 加载 dll 文件为一个对象
dll = CDLL("dll_test.dll")
# 调用 dll 中的函数,dll 要有add()函数
res = dll.add(1, 2)
GOOD LUCK!