最近在做用python调用C++程序,因为C++程序是现成的,而且效率高。听着感觉不难,直接调用dll应该就成,等我着手做的时候,真是处处碰壁。
最开始的时候,百度一些资料,说python与c++的交互分为以下几种:
1、自己写一个接口程序,实现C++到python的映射,从而实现python的扩展。
2、利用工具包SWIG,这个方法真是简单,深得我心,在这个方法上耗时半天,最终弃之。
3、对C++程序生成dll文件,python利用自身带的包ctypes实现数据的传递,最终成功。
前两种方法我尝试后均以失败告终,因为C++与python交互时,我需要传递指针,以上两种方法我没搞懂怎么传递数据。还有一些别的方法像利用Boost、numpy等,实在是等不及了,刚开个头就放弃了。现在就说说亲测有效的方法,直接上代码:
my.cpp
#define EXPORT_MY_DLL
#include "my.h"
#include <stdio.h>
#include <math.h>
#include <iostream>
using namespace std;
MY_API void Add(int *L, int *R)
{
for (int i = 0; i < 2; i++)
{
L[i] += 5 * R[i];
R[i] += 1;
}
}
my.h