Python與C++混合編程之Python調用C++

一、操作環境:

       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()

        生成結果:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章