使用 SWIG 包装几个 C 源代码(.c 文件)以在 Python 中使用它们的功能

Wrap several C-Sources (.c files) to use their functions in Python using SWIG

有很多关于如何包装一个.c 文件的单个函数的教程。但是我想包装几个 .c 文件的所有功能。这就是为什么我将它们全部包含在接口文件中的原因 (interface.i)

/*interface.i*/
%module interface
%include source1.c
%include source2.c
%include source3.c

我现在想知道是否必须包含 .c 文件中出现的所有头文件。另外,如果我必须考虑头文件中提到的头文件。

通常你的 C 程序应该有一个它公开的接口。例如 source1/2/3.c 连同它们的内部头文件 source1/2/3.h 编译成 foo.dll。然后接口foo_function.h暴露了可以从外部调用的函数。

要包装外部函数,您只需要 foo_functions.h 在 interface.i 中。你不需要 source1/2/3.h.
C 代码可能有另一个 foo_constants.h 左右,属于接口,具有您需要的结构和非常方便的常量定义。你也应该加上那个。

此外,您可能需要 SWIG 本身的一些包含。生成例如指针和数组处理。类似于:
%include cpointer.i
%pointer_functions(int, intp)
%include carrays.i
%array_functions(unsigned int, uintarray)

祝你好运!