1

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

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

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

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


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

4

1 回答 1

1

你的计划是正确的。

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

您还可以为您的 C API 添加一个仅 C++ 标头的包装器,以使其可轻松地从 C++ 重用并且异常安全。

于 2014-11-20T15:10:14.890 回答