CFFI如何在某个目录中使用c文件?

时间:2014-04-10 06:20:18

标签: python python-cffi

我正在学习用CFFI在python程序中调用c并编写名为' add.c'的c文件。如下:

float add(float f1, float f2)
{
    return f1 + f2;
}

和一个名为' demo.py'的python文件在&add;'

中调用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 个答案:

答案 0 :(得分: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