在 Cython 项目中包含 .o 文件
Including .o files in Cython Project
我正在尝试使用 Cython 进行 Python 绑定以与 C 对象交互。我得到了:
parser.o
和 parser.h
我制作了 .pyx
和 .pxd
文件来定义我将从 .h
文件中使用的方法和类型。当我尝试调用我在 .pxd
中定义的方法时,它反映了 .h
中定义的方法,我收到错误:
undefined symbol: function_name
我的 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
文件。任何关于如何 link .o
文件与我正在尝试做的事情的帮助都会很棒。
今天早上遇到了同样的问题,发现扩展需要通过extra_link_args
提供额外的.o文件。但是,在您的情况下,我担心 Cython 会破坏您的 parser.c
文件。将原来的 parser.c
和 parser.h
重命名为 parser_c.c
和 parser_c.h
之类的名称可能有助于避免这种情况;并生成 parser_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
)
)```
我正在尝试使用 Cython 进行 Python 绑定以与 C 对象交互。我得到了:
parser.o
和 parser.h
我制作了 .pyx
和 .pxd
文件来定义我将从 .h
文件中使用的方法和类型。当我尝试调用我在 .pxd
中定义的方法时,它反映了 .h
中定义的方法,我收到错误:
undefined symbol: function_name
我的 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
文件。任何关于如何 link .o
文件与我正在尝试做的事情的帮助都会很棒。
今天早上遇到了同样的问题,发现扩展需要通过extra_link_args
提供额外的.o文件。但是,在您的情况下,我担心 Cython 会破坏您的 parser.c
文件。将原来的 parser.c
和 parser.h
重命名为 parser_c.c
和 parser_c.h
之类的名称可能有助于避免这种情况;并生成 parser_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
)
)```