gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:52:44 26 4
gpt4 key购买 nike

基本上,我有一个庞大的现有代码库,我想使用 SWIG 将所有 .h 文件包装在一个特定目录中。这些 .h 文件中的许多类都继承自目录树中别处定义的其他类,并且手动追踪它们中的每一个将是一件痛苦的事情。有没有办法让 SWIG 自动包含这些或至少自动创建 .i 文件?我不想包装我自己的代码之外的任何类(例如标准库),但如果我使用 -importall 选项,这些最终会被包含在内。

最佳答案

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

部分原因是“正常工作”是完全随意的:如果 A 在您要导出的那组 header 中,并且 A 派生自 B,您是否需要导出 B“才能正常工作”?一点也不。但你可能想要。而且就算A返回了B的实例,还需要export B吗?否(因此不需要在 .i 中导入 B.h),SWIG 返回的对象将是 B 实例的不透明句柄,尽管您无法对其调用任何方法,但您可以提供它作为接受 B 作为参数的函数的参数。

最实用的是编写一个批处理或 python 脚本来找到一组你想要的 .h(如果都在同一个文件夹中,则为一个衬里),复制/粘贴到你的 .i 中,然后手动清理 .i只包含您真正想要导出到目标语言的文件,并添加任何缺失的文件以获得您想要的某些功能(如实例化基类等)。您可以随心所欲地说“不,我不想自定义”,您别无选择。

关于python - 如何使用 SWIG 包装许多 .h 文件并包含任何依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25671624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com