У меня работает эта простая оболочка, и я пытаюсь внести изменения в порядок
чтобы получить массив сразу, чтобы использовать его в python.
test.cpp
#include <iostream>
using namespace std;
class Test{
public:
int ret(void);
};
int vec[10] = {0,1,2,3,4,5,6,7,8,9};
int Test::ret(){
return *vec; // This obviously won't work
}
extern "C" {
Test* Test_new(){ return new Test();}
int Test_ret(Test* test){ return test->ret();}
}
test.py
from ctypes import cdll
lib = cdll.LoadLibrary('./libtest.so')
class Test(object):
def __init__(self):
self.obj = lib.Test_new()
def ret(self):
return lib.Test_ret(self.obj)
dev = Test()
ret = dev.ret()
print ("Return", ret)
Сценарий компиляции
g++ -c -fPIC test.cpp -o test.o
g++ -shared -Wl,-soname,libtest.so -o libtest.so test.o
Как я могу это сделать?