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

        生成结果:

 

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