小编Sle*_*ger的帖子

Cython未定义符号,带C包装器

我试图将C代码公开给cython,并尝试使用另一个cython模块中的c文件中定义的函数时遇到“未定义符号”错误。
我的h文件中定义的函数以及使用手动包装的函数都可以正常工作。

基本上与这个问题相同,但是解决方案(针对库的链接)对我来说并不令人满意。
我认为我在setup.py脚本中缺少什么?


我的案例的最小示例:

foo.h

int source_func(void);

inline int header_func(void){
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

foo.c

#include "foo.h"

int source_func(void){
    return 2;
}
Run Code Online (Sandbox Code Playgroud)


foo_wrapper.pxd

cdef extern from "foo.h":
    int source_func()
    int header_func()

cdef source_func_wrapper()
Run Code Online (Sandbox Code Playgroud)

foo_wrapper.pyx

cdef source_func_wrapper():
    return source_func()
Run Code Online (Sandbox Code Playgroud)


我想在以下功能中使用cython模块:
test_lib.pyx

cimport foo_wrapper

def do_it():
    print "header func"
    print foo_wrapper.header_func() # ok
    print "source func wrapped"
    print foo_wrapper.source_func_wrapper() # ok    
    print "source func"
    print foo_wrapper.source_func() # undefined symbol: source_func
Run Code Online (Sandbox Code Playgroud)


setup.py同时构建foo_wrappertest_lib

cdef extern from …
Run Code Online (Sandbox Code Playgroud)

cython

1
推荐指数
1
解决办法
920
查看次数

标签 统计

cython ×1