1)下载 mingw-get-setup.exe
安装需要gcc 等
2)编成C程序
#include <iostream>
class Foo{
public:
void bar(){
std::cout << "Hello" << std::endl;
}
};
extern "C" {
Foo* Foo_new(){ return new Foo(); }
void Foo_bar(Foo* foo){ foo->bar(); }
}用下面的命令,编译得到 libfoo.so
g++ -c -fPIC foo.cpp -o foo.o
g++ -shared -Wl,-soname,libfoo.so -o libfoo.so foo.o
3)写Python 文件 fooWrapper.py
from ctypes import cdll
lib = cdll.LoadLibrary('./libfoo.so')
class Foo(object):
def __init__(self):
self.obj = lib.Foo_new()
def bar(self):
lib.Foo_bar(self.obj)
f = Foo()
f.bar() 运行fooWrapper.py 成功
接下来看把python 发布出去需要打包哪些文件
ref:http://stackoverflow.com/questions/18101215/submit-int-and-string-arrays-using-ctypes-python-c
本文介绍如何使用GCC编译C++代码为动态链接库,并通过Python的ctypes库来调用C++编写的类方法。首先,创建了一个简单的C++类,然后编译该类为libfoo.so动态链接库。接着,编写了Python脚本fooWrapper.py来加载这个库,并实例化C++类,调用其成员函数。最后,验证了跨语言调用的成功。

被折叠的 条评论
为什么被折叠?



