我们正在尝试将OCCI与GCC结合使用。 OCCI使用sun studio编译器编译。有没有可能使用OCCI与GCC而不是太阳本地编译器CC?
答案 0 :(得分:0)
您实际上无法混合多个C ++运行时库。
C ++运行时实现非常复杂。这篇文章解释了一些复杂性:
Stability of the C++ ABI: Evolution of a Programming Language
C ++ ABI
C ++ ABI包含C ABI。此外,它还包括以下内容 特性:
分层类对象的布局,即基类和虚拟基类
指向成员的指针布局
传递隐藏的功能参数(例如,这个)
如何调用虚函数:
Vtable内容和布局
指向vtable指针的对象中的位置
查找此指针的调整
查找基类偏移量
通过指向成员的指针调用函数
管理模板实例
名称的外部拼写(“名称修改”)
构建和销毁静态对象
投掷和捕捉异常
标准库的一些细节:
实施定义的详细信息
typeinfo和运行时类型信息
对成员的内联功能访问
您还可以添加不同的C ++编译器,以不同的方式实现名称修改,使得在Solaris上直接使用OCCI实现OCCI是不可能的。
你可能会得到一些有用的东西,但你所做的任何事情都会极其脆弱。下一个操作系统或C ++运行时更新可能会破坏问题,您可能无法解决问题。
除非您编写非常简单的应用程序,否则我强烈建议您只使用Solaris Studio编译器 - 并熟悉包括性能分析,内存检查甚至竞争条件检测在内的整套工具,其中大部分都是在我看来,优于GCC使用的工具。