如何构建独立于编译器的C++库(适用于 Solaris Studio 和 gcc)



我想扩展我的库,它目前仅使用 gcc 编译,供 Solaris Studio 使用。

我的想法是执行以下操作:

  1. 用 C 语言编写包装器函数,通过外部 C 链接公开接口的相关部分。
  2. 然后使用 gcc 构建这个库。生成的 c-header 和二进制文件与编译器无关,因为不再有名称重整。
  3. 包括 c-header 并链接到使用 Solaris Studio 编译的项目中。

问题:这是一个可行的方法,还是有更好的解决方案?


注意:除了名称重整之外,还要注意与异常处理相关的问题。

你的计划是正确的。

只要您的库公开与平台 ABI 兼容的 C API(C 类型的大小和对齐方式,调用约定)并且不抛出C++异常,您就不会在使用其他编译器或语言链接库时遇到麻烦。

您还可以为 C API 添加仅 C++ 标头包装器,使其易于从C++和异常安全中重用。

相关内容

  • 没有找到相关文章

最新更新