python - 包装几个 C 源(.c 文件)以使用 SWIG 在 Python 中使用它们的函数

标签 python c interface wrapper swig

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

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

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

最佳答案

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

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

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

祝你好运!

关于python - 包装几个 C 源(.c 文件)以使用 SWIG 在 Python 中使用它们的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31721360/

相关文章:

c - 格式化输出 - 相同数据到 C 中的多个文本文件

c# - 在基类和派生类中实现接口(interface)

java - 如何向多个类继承的方法添加参数

python - 如何通过word2vec获取反义词?

python - 在 Django DetailView 中获取表单

c - TI 游戏 handle 示例项目中的这个中断禁用/启用对有什么作用吗?

Python 3 : Determine if object supports IO

python - Google App Engine 任务队列 - 令人讨厌的失败

python - 如何执行 python update mysql 查询

无法删除C文件夹中的文件