假设我有两个想要链接在一起的项目:
- 使用 Visual C++ 编译为 DLL 文件的 C++ 库。
- 使用库中的类使用 C++ Builder 编译的 C++ 可执行文件。
我意识到没有标准的 C++ ABI,任何将这两个 C++ 项目直接链接在一起的尝试都会失败。创建允许我完成此任务的兼容层的良好自动化方法是什么?
例如,可以想象 C++ 库可以通过 C 接口公开自己。然后可执行文件将包含一些 C++ 类,这些类包装了 C++ 库公开的 C 接口。由于 C 有一个标准的 ABI,所以它可以工作。
唯一的问题是如何自动创建 C 接口和 C++ 包装类 - 手动维护这不是一个选项。SWIG 项目看起来很有希望,但不幸的是,C++ 并不是 SWIG 在其网站上列出的出口之一。有没有办法用 SWIG 做我想做的事?或者除了 SWIG 之外还有其他项目可以帮助我完成这项任务吗?
还是我以错误的方式解决这个问题?
编辑: 核心 C++ 库旨在跨平台。显然,可执行文件是特定于 Windows 的。我不想将核心库污染到无法在其他平台上编译的程度。