Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在Cython项目中包括.o文件_Python 3.x_Cython_Cythonize - Fatal编程技术网

Python 3.x 在Cython项目中包括.o文件

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 = [

我正在尝试使用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 = [
        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
        )
)```


你找到解决方法了吗?对于对象文件,在
扩展名
-类中有一个特殊选项:
额外的对象
,请参阅这对我有用。非常感谢。