我想扩展我的库,该库目前仅使用 gcc 进行编译,以供 Solaris Studio 使用。
我的想法是执行以下操作:
- 用C 编写包装函数,通过extern C 链接暴露接口(interface)的相关部分。
- 然后使用 gcc 构建这个库。生成的 c-header 和二进制文件是独立于编译器的,因为不再有名称修改。
- 将 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/