0
我编写的编辑距离称为edlib一个C模块链接错误,然后我把它在我的项目,从编译用Cython代码中调用的extern库
setup.py
structureS.pyx
cedlib.pxd
cedlib
|_____include
|______edlib.h
|_____lib
|______edlib.lib
但在运行python setup build_ext --inplace
后,我已经连接的错误,在这里是代码,
#file:setup.py
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
ext_modules = [
Extension(
"structureS",
["structureS.pyx"],
extra_compile_args=['/openmp'],
extra_link_args=['/openmp'],
include_dirs = ['edlib/include'],
#libraries = ['edlib'],
library_dirs = ['edlib/lib'],
# sources = ['edlib/src/edlibe.cpp']
)
]
setup(
name='structureS',
ext_modules=cythonize(ext_modules),
)
的PXD文件是由模块作者在这个环节cedlib.pxd
#structureS.pyx
from cedlib cimport EdlibAlignResult, edlibAlign, edlibDefaultAlignConfig,edlibFreeAlignResult
cdef char* query = "ACCTCTG"
cdef char* target = "ACTCTGAAA"
cdef EdlibAlignResult result = edlibAlign(query, 7, target, 9, edlibDefaultAlignConfig())
if (result.status == 0): #EDLIB_STATUS_OK
printf("%d", result.editDistance)
edlibFreeAlignResult(result)
给出
这里是错误消息:
structureS.obj:错误LNK2001:symbole externe非解像度edlibFreeAlignResult
structureS.obj:错误LNK2001:symbole externe非解像度edlibAlign
structureS.obj :error LNK2001:symbole externe nonrésolu edlibDefaultAlignConfig
注意:我的项目是编译为64位平台,并为模块配置为32位平台,我试图编译模块为64位与Visual Studio 2017没有成功,
为什么你评论'libraries = ['edlib'],'line? –
,因为在我已经将头文件和库文件复制到编译器文件夹,所以我已经使用'库= ['edlib']',但与链接错误,我已经将文件复制到名为edlib文件夹上面的问题,我评论了你提到的这一行,我认为它在两种情况下都是一样的,所以问题不在于此 –