大约两年前,当我第一次实现我们的 SWIG 绑定时,我遇到了这个问题。一旦我们暴露了大量代码,我们就到了 SWIG 会输出 C++ 文件的地步,编译器无法处理它们。我可以解决这个问题的唯一方法是将接口拆分为多个模块并分别编译它们。
这有几个缺点:
• 每个模块都必须了解其他模块的依赖关系。我有一个脚本来生成处理这方面的接口文件,但它增加了额外的复杂性。
• 每个附加模块都会增加动态链接器加载代码所需的时间。我添加了一个导入所有子模块的init .py 文件,这样代码被拆分的事实对用户来说是透明的,但始终可见的是加载时间长。
我目前正在审查我们的构建脚本/构建过程,我想看看我是否能找到比我现在更好的解决方案来解决这个问题。理想情况下,我将拥有一个包含所有包装代码的共享库。
有谁知道我如何使用 SWIG 实现这一目标?我已经看到了一些用 Ruby 为特定项目编写的自定义代码,其中的输出经过后处理以使其成为可能,但是当我查看 Python 包装器的可行性时,它看起来并不那么容易。