Python 3.x 在Cython项目中包括.o文件
我正在尝试使用Cython使Python绑定与C对象交互。我被给予:Python 3.x 在Cython项目中包括.o文件,python-3.x,cython,cythonize,Python 3.x,Cython,Cythonize,我正在尝试使用Cython使Python绑定与C对象交互。我被给予: parser.o和parser.h 我制作了.pyx和.pxd文件来定义我将从.h文件中使用的方法和类型。当我试图调用我在.pxd中定义的方法,该方法与.h中定义的方法相镜像时,我得到了错误: 未定义符号:函数名称 My setup.py看起来像: from setuptools import setup, Extension from Cython.Build import cythonize extensions = [
parser.o
和parser.h
我制作了.pyx
和.pxd
文件来定义我将从.h
文件中使用的方法和类型。当我试图调用我在.pxd
中定义的方法,该方法与.h
中定义的方法相镜像时,我得到了错误:
未定义符号:函数名称
My setup.py看起来像:
from setuptools import setup, Extension
from Cython.Build import cythonize
extensions = [
Extension(
'parser',
['parser.pyx'],
)
]
compiler_directives = {'language_level': 3}
setup(
ext_modules = cythonize(
extensions,
**compiler_directives
)
)
我想我不知道如何包含提供给我的
parser.o
文件。关于如何将.o
文件与我正在尝试的内容链接的任何帮助都将非常有用。今天早上我遇到了同样的问题,发现扩展需要通过额外链接参数提供额外的.o文件。然而,在您的情况下,我担心Cython会破坏您的parser.c
文件。将原始的parser.c
和parser.h
重命名为parser\u c.c
和parser\u c.h
可能有助于避免这种情况;并生成解析器\u c.o
from Cython.Build import cythonize
extensions = [
Extension(
'parser',
['parser.pyx'],
extra_link_args = ['parser_c.o']
)
]
compiler_directives = {'language_level': 3}
setup(
ext_modules = cythonize(
extensions,
**compiler_directives
)
)```
你找到解决方法了吗?对于对象文件,在扩展名
-类中有一个特殊选项:额外的对象
,请参阅这对我有用。非常感谢。