【发布时间】:2018-01-27 17:39:42
【问题描述】:
我正在做一个 cffi 测试演示,当我尝试运行 python 测试器文件时,它返回以下错误:TypeError: initializer for ctype 'Car *'似乎确实是 'Car *',但是类型不同(检查您是否没有混淆不同的 ffi 实例)
car.h 文件定义了 C 结构 Car,如下所示:
/*Class definition for car*/
typedef struct {
char make[32];
char model[32];
char year[32];
char color[32];
} Car;
这是我试图用来测试 C 代码的使用 cffi 的 python 文件。
import unittest
import cffi
import importlib
ffi=cffi.FFI()
def load(filename):
#load source code
source = open('../src/' + filename + '.c').read()
includes = open('../include/' + filename + '.h').read()
#pass source code to CFFI
ffi.cdef(includes)
ffi.set_source(filename + '_', source)
ffi.compile()
#import and return resulting module
module = importlib.import_module(filename + '_')
return module.lib
class carTest(unittest.TestCase):
def test_setMake(self):
module = load('car')
myCar = ffi.new('Car *',
["Honda", "Civic", "1996", "Black"])
make = ("char []", "Honda")
self.assertEqual(module.setMake(myCar, make),
car)
if __name__ == '__main__':
unittest.main()
非常欢迎对此问题提出任何建议。我觉得我已经重复了一百次。
提前致谢
【问题讨论】:
-
这不是minimal reproducible example;提示:尝试仅使用这 2 个片段重现错误 - 不可能。
-
另外,unittest 的东西完全不相关,然后您可以将 Python 代码压缩成几行。获取一个可以在问题本身中重现问题的工作示例。
标签: c python-cffi