我的C++程序:我如何从python获得C++结构?
#include <iostream>
using namespace std;
struct FirstStructure
{
public:
int first_int;
int second_int;
};
struct SecondStructure
{
public:
int third_int;
FirstStructure ft;
};
int test_structure(SecondStructure ss)
{
int sum = ss.ft.first_int + ss.ft.second_int + ss.third_int;
return sum;
}
extern "C"
{
int test(SecondStructure ss)
{
return test_structure(ss);
}
}
我编译cpp文件使用此命令的 “g ++ -shared -fPIC -o array.so array.cpp”。 然后我调用该文件array.so使用Python,我的Python程序,因为这些:
#coding=utf-8
import ctypes
from ctypes import *
class FirstStructure(Structure):
_fields_ = [
("first_int", c_int),
("second_int", c_int)
]
class SecondStructure(Structure):
_fields_ = [
("third_int", c_int),
("ft", FirstStructure)
]
if __name__ == '__main__':
fs = FirstStructure(1, 2)
ss = SecondStructure(3, fs)
print ss.ft.first_int
lib = ctypes.CDLL("./array.so")
print lib.test(ss)
当我运行Python程序,控制台显示错误,错误是“分段错误”。我阅读文档从URL“https://docs.python.org/2/library/ctypes.html”,如何修复该错误。
虽然在Windows上我拷贝了代码,除了向'test'函数中添加'__declspec(dllexport)'并加载.dll而不是.so而且它完美地工作,返回'1'和' 6'。 – 2014-11-01 05:27:34