我想了解weave.inline在我的Python程序中打包C代碼。下面的代碼簡單地取numpy的陣列和multiplicates所有元素通過2.如何將scipy.weave.inline與外部C庫一起使用?
inl.py
import numpy
import scipy.weave
a = numpy.array([1.0, 2.0, 3.0])
N = a.shape[0]
print a
code = \
"""
int i;
for(i = 0; i < N; i++)
{
a[i] = a[i] * 2;
}
"""
scipy.weave.inline(code, ['a','N'])
print a
然後我想攜帶來自內聯代碼一些功能外部庫。讓它成爲由2瑣碎乘法所以我創建兩個文件:
mult.c
#include "mult.h"
float mult(float n)
{
return n * 2;
}
mult.h
float inc(float n);
現在我想使用的功能MULT在我的內聯代碼中。但我不知道如何將我的C文件與Python內聯代碼鏈接起來。我嘗試將C文件編譯爲共享庫,並將它們作爲頭文件和庫進行編織,但這是徒勞的。有什麼建議麼?
我已經嘗試了像Cython,ctypes和SWIG這樣的C/Python綁定。編織看起來像是將Numpy數組傳遞給C的最簡單方式,所以我想找到一種在其代碼中使用外部庫的方法。另外,我已經有了一段C編碼 - 並且它很好地工作。無論如何,謝謝。 – user517893 2010-11-27 04:43:52