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

C++ 如何构建独立于编译器的C++;库(用于Solaris Studio和gcc)?,c++,gcc,extern,solaris-studio,C++,Gcc,Extern,Solaris Studio,我想扩展我的库,它目前只使用gcc进行编译,也将被solarisstudio使用 我的想法是做到以下几点: 用C编写包装函数,它通过外部C链接公开接口的相关部分 然后使用gcc构建这个库。生成的c头文件和二进制文件是独立于编译器的,因为不再有名称混乱 将c标题和链接包含到使用Solaris Studio编译的项目中 问题:这是一个可行的方法还是有更好的解决方案 注意:除了名称混乱,还要注意。你的计划是正确的 只要您的库公开了与平台ABI兼容的C API(C类型的大小和排列、调用约定),并且不抛

我想扩展我的库,它目前只使用gcc进行编译,也将被solarisstudio使用

我的想法是做到以下几点:

  • 用C编写包装函数,它通过外部C链接公开接口的相关部分
  • 然后使用gcc构建这个库。生成的c头文件和二进制文件是独立于编译器的,因为不再有名称混乱
  • 将c标题和链接包含到使用Solaris Studio编译的项目中
  • 问题:这是一个可行的方法还是有更好的解决方案


    注意:除了名称混乱,还要注意。

    你的计划是正确的

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


    您还可以为C++ API添加一个C++头包包,使其易于从C++和异常安全中重新使用。

    不需要在C中编写任何东西,<代码>外“C”<代码>以获得C链接就足够了。此外,大多数系统现在有一个C++ ABI。只需确保避免使用它未涵盖的任何内容(主要是指一些库功能)。一个可以说更好的解决方案是保留库作为源代码,并根据需要为任何平台编译。@Deduplicator我知道Solaris Studio在某些STL组件方面存在问题。这对像
    myMethod(std::vector data)
    这样的方法有效吗?@n.m.Solaris Studio不编译我的库,因为它不编译第三方lib,比如ApacheQpidwell,这很糟糕。向两个供应商提交错误报告。您指出异常是一个可能的问题是正确的。我认为只有当异常通过c层时才会出现问题,但似乎执行一般都有问题?