CFFI如何使用特定目录中的c文件?
我正在学习如何在Python程序中调用C语言代码,使用的是CFFI这个工具。我写了一个名为'add.c'的C文件,内容如下:
float add(float f1, float f2)
{
return f1 + f2;
}
然后我又写了一个名为'demo.py'的Python文件,用来调用'add.c'中的add方法:
from cffi import FFI
ffi = FFI()
ffi.cdef("""
float(float, float);
""")
C = ffi.verify("""
#include 'add.c'
""", libraries=[]
)
sum = C.add(1.9, 2.3)
print sum
当我运行demo.py时,出现了一个错误,提示找不到add.c文件。为什么找不到add.c文件呢?我该怎么解决这个问题呢?
1 个回答
3
我能够重现你遇到的错误,具体的错误信息如下。
__pycache__/_cffi__x46e30051x63be181b.c:157:20: fatal error: add.c: No such file or
directory
#include "add.c"
看起来是 cffi
在尝试从 __pycache__
这个子目录里编译你的文件,而 add.c
文件是在当前目录下。解决这个问题的方法是使用相对路径。
#include "../add.c"
不过,修复了这个问题后,你的声明也不正确,所以我也把它修正了,下面的代码可以产生正确的结果。
from cffi import FFI
ffi = FFI()
ffi.cdef("""
float add(float f1, float f2);
""")
C = ffi.verify("""
#include "../add.c"
""", libraries=[]
)
sum = C.add(1.9, 2.3)
print sum