【问题标题】:Including .o files in Cython Project在 Cython 项目中包含 .o 文件
【发布时间】:2020-06-03 17:18:52
【问题描述】:

我正在尝试使用 Cython 进行 Python 绑定以与 C 对象交互。我得到了:

parser.oparser.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 文件。关于如何将 .o 文件与我正在尝试做的事情联系起来的任何帮助都会很棒。

【问题讨论】:

  • 您找到解决方法了吗?

标签: python-3.x cython cythonize


【解决方案1】:

我今天早上遇到同样的问题,发现扩展需要通过extra_link_args提供额外的.o文件。但是,就您而言,我担心 Cython 会破坏您的 parser.c 文件。将原始的 parser.cparser.h 重命名为 parser_c.cparser_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
        )
)```

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2011-10-12
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
  • 2019-01-20
相关资源
最近更新 更多