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

标签 c++ gcc extern solaris-studio

我想扩展我的库,该库目前仅使用 gcc 进行编译,以供 Solaris Studio 使用。

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

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

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


注意:除了名称修改,还要注意 problems related to exception handling .

最佳答案

你的计划是正确的。

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

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

关于c++ - 如何构建独立于编译器的 C++ 库(适用于 Solaris Studio 和 gcc)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27041788/

相关文章:

c++ - 使用 C++ 的 Array 中的非静态成员引用错误

java - TopCoder 最佳选择算法来自 SRM 489 DIV 2(500 分)

gcc - GCC 可以编译 GIMPLE 吗?

gcc - 使用 GCC 有选择地删除警告消息

c++ - 如何解决这个未声明的标识符

c++ - 错误 C2070 - 未指定外部数组大小。 - 传递给 MACRO 的数组

c++ - 用零填充阵列 - openCV

c - 常量变量的 GCC 弱属性

c - 头文件中的函数是否应该设为 "extern"?

c++ - 与 friend 一起使用父类(super class)的私有(private)变量