一、操作环境:
visual studio2015+ Python3.6(Windows10系统64位 Python3.6 64 位 visual studio 2015 debug x64)
在这里面需要注意的是:visual studio 2015 的位数要与Python语言的位数一致,在这里设置为64位。若它俩之间的位数不同,在后期生成动态链接库时,即.dll文件会出现Python找不到的问题。因此,在文件生成之前须确保位数相同。
二、动态链接库的生成
动态链接库在visual studio2015下的建立:
C++测试程序:
#define EXPORT __declspec(dllexport)
#include<iostream>
using namespace std;
class TestDLL {
public:
void hello();
};
void TestDLL::hello() {
cout << "hello world" << endl;
}
extern "C" {
TestDLL td;
EXPORT void hello() {
td.hello();
}
EXPORT void hello1() {
cout << "hello world 111111" << endl;
}
}
程序编写之后,单击菜单栏 中的"生成",即可生成一个mydll.dll文件。若编译成功,即可根据visual studio2015下面的“输出”查看到该.dll文件所在的路径:
注意:自此过程中,C++文件里面一定要有extern "C",且“C”为大写。也就是说Python只能调用C函数,不能直接调用方法,但是能解析C++方法。若不用extern "C",构建后的动态链接库没有这些函数的符号表。
三、Python调用C++
将C++生成的.dll文件放在与调用.dll文件的Python程序放在同一目录下:
Python程序如下:
import ctypes
lib = ctypes.cdll.LoadLibrary('./mydll.dll')
lib.hello()
lib.hello1()
生成结果: