Как передать массив из C ++ в Python? - PullRequest
0 голосов
/ 08 мая 2018

У меня работает эта простая оболочка, и я пытаюсь внести изменения в порядок чтобы получить массив сразу, чтобы использовать его в 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

Как я могу это сделать?

...