C++ 関数から Python 関数に行列を返したい。配列を返す例であるこのソリューションを確認しました。
10x10
例として、で満たされた配列を返したいとし10
ます。
関数.cpp:
extern "C" int* function(){
int** information = new int*[10];
for(int k=0;k<10;k++) {
information[k] = new int[10];
}
for(int k=0;k<10;k++) {
for(int l=0;l<10;l++) {
information[k][l] = 10;
}
}
return *information;
}
Python コードは次のとおりです 。
import ctypes
from numpy.ctypeslib import ndpointer
lib = ctypes.CDLL('./library.so')
lib.function.restype = ndpointer(dtype=ctypes.c_int, shape=(10,))
res = lib.function()
print res
これをコンパイルするには、次を使用します。
g++ -c -fPIC function.cpp -o function.o
g++ -shared -Wl,-soname,library.so -o library.so function.o
soname
うまくいかない場合は、次を使用しますinstall_name
。
g++ -c -fPIC function.cpp -o function.o
g++ -shared -Wl,-install_name,library.so -o library.so function.o
Python プログラムを実行した後python wrapper.py
の出力は次のとおりです。
[10 10 10 10 10 10 10 10 10 10]
10 要素の 1 行のみ。10x10 のマトリックスが欲しいです。私が間違っていることは何ですか?前もって感謝します。