我正在使用 ctypes 并将 ndarray 传递给 c 函数。它给了我一个奇怪的输出行为。继承人一些代码:
C-功能:
int foo(int * foo,int N){
for(int i=0;i<N;i++){
cout << "i " << i << " "<< foo[i] << endl;
}
return 0;
}
Python:
from ctypes import *
import numpy as np
bar = cdll.LoadLibrary(".../libtest.so")
N = c_int(10)
check = np.ones(10, dtype=int)
print check
bar.foo(c_int(check.ctypes.data),N)
输出:
[1 1 1 1 1 1 1 1 1 1]
i:0 out:1
i:1 out:0
i:2 out:1
i:3 out:0
i:4 out:1
i:5 out:0
i:6 out:1
i:7 out:0
i:8 out:1
i:9 out:0
应该都是对的吗?:)
我正在编译
g++ -g -c -fPIC -O0 pythagoras.cpp
g++ -shared -Wl,-soname=libtest.so -o libtest.so pythagoras.o
有人有什么想法吗?我现在正在搜索失败至少 1 小时,但我不知道解决方案是什么(可能是愚蠢的)
提前致谢!