我的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