CFFI错误未知类型名称:如何在构建文件中正确添加外部库?

问题描述 投票:0回答:1

我用cfile.c编写了一个c文件cfile.h,并且libcfile.sogcc -c -fPIC cfiel.c -o cfile.o生成了gcc cfile.o -shared -o libcfile.so库。它们都在目录/demo/c中。

cfile.c文件正在使用sqlite3,位于目录/demo/lib中。

我尝试使用CFFIlibcfile.so编译为python模块。这是我的python脚本:

from cffi import FFI
ffibuilder = FFI()

ffibuilder.cdef("""
    float pi_approx(int n);
""")

ffibuilder.set_source("cfile",
"""
     #include "cfile.h"
""",
     include_dirs = ['/demo/include'], 
     library_dirs = ['/demo/lib'],
     libraries=[‘cfile', 'm', 'sqlite3']) 

if __name__ == "__main__":
    ffibuilder.compile(verbose=True)

但是后来我得到了错误:error: unknown type name 'sqlite3',最后是cffi.VerificationError: CompileError: comman 'gcc' faild with exit status 1

我不知道这些错误是由于build_extension脚本还是链接的.so文件错误?

python c compiler-errors python-module cffi
1个回答
0
投票

[我发现了原因,#include <sqlite3.h>应该包含在头文件cfile.h中,但是我并没有真正理解它,因为通常头文件包含在源文件中。

© www.soinside.com 2019 - 2024. All rights reserved.