如何用SWIG包装许多.h文件并包含任何依赖项?

2024-10-02 18:22:13 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我有一个很大的现有代码库,我想使用SWIG将所有的.h文件包装到一个特定的目录中。这些.h文件中的许多类都是从目录树中其他地方定义的类继承而来的,手工追踪每一个类会很麻烦。有没有办法让SWIG自动包含这些,或者至少自动创建.i文件?我不想在我自己的代码之外包装任何类(例如标准库),但是如果我使用-importall选项,这些类最终会被包括在内。在


Tags: 文件代码目录标准定义选项地方swig
1条回答
网友
1楼 · 发布于 2024-10-02 18:22:13

没有一种内置的方法来自动生成.i文件,或者用文件夹中的all.h和所有“other.h”填充.i以使其正常工作

部分原因是“正常工作”是完全任意的:如果A在您要导出的头集中,而A从B派生,您是否需要导出B“以使它正常工作”?一点也不。但你可能想。即使A返回B的实例,您是否需要导出B?不需要(所以不需要在.i中导入B.h),SWIG返回的对象将是B实例的一个不透明句柄,尽管不能对其调用任何方法,但可以将其作为参数提供给接受B作为参数的函数。在

最实用的方法是编写一个批处理或python脚本来查找所需的.h的基本集(如果都在同一个文件夹中,则为一行代码),将其复制/粘贴到.i中,然后手动清理,并添加任何缺少的元素以获得您想要的某些特性(例如实例化基类等)。你可以说“不,我不想定制”所有你想要的,你没有选择。在

相关问题 更多 >