我试图将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)
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)
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)
foo_wrapper和test_lib
cdef extern from …Run Code Online (Sandbox Code Playgroud) cython ×1