一、操作環境:
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()
生成結果: