问题描述
我正在尝试使用Cython将函数从静态库公开给python。我有一个myLibrary.lib
和一个myLibrary.dll
文件,但没有头文件。库中有一个名为myFunc
的函数/符号。
所以我写了我的core.pxd
文件:
cdef extern short myFunc(char*,short*,int*,float*,short*)
还有我的core.pyx
文件:
import numpy as np
cimport numpy as np
def get_data(char[:] path,int istart,int iend):
cdef short err = 0
cdef int[:] pts = np.arange(istart,iend,dtype=np.int32)
cdef short nPts = <short>pts.shape[0]
cdef float[:,:,:] out = np.zeros((nPts,11,18),dtype='f4')
myFunc(&path[0],&nPts,&pts[0],&out[0,0],&err)
return np.asarray(out)
我最终将使用哪个版本:
from setuptools import setup,Extension
from Cython.Build import cythonize
import numpy
setup(
ext_modules = cythonize([
Extension('mymodule.core',['mymodule/core.pyx'],include_dirs=[numpy.get_include()],libraries=['myLibrary'],library_dirs=['mymodule'],)
])
)
然后我使用以下哪个:
python setup.py build_ext --inplace
但是,它给了我错误:
core.obj : error LNK2001: unresolved external symbol _myFunc
似乎正在搜索符号_myFunc
而不是myFunc
。如何防止Cython搜索下划线前缀的符号,而仅使用我指定的符号?
我正在使用32位python 3.6,该库是32位的,并且我已经安装了numpy和Cython的32位版本。库文件(dll和lib)与core.pyx
文件位于同一目录中。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)