我们正在尝试将 OCCI 与 GCC 一起使用。OCCI 是使用 sun studio 编译器编译的。是否有可能将 OCCI 与 GCC 一起使用而不是 sun 本机编译器 CC?
问问题
188 次
1 回答
0
您实际上不能混合多个 C++ 运行时库。
C++ 运行时实现非常复杂。这篇文章解释了一些复杂性:
C++ ABI
C++ ABI 包括 C ABI。此外,它还涵盖以下功能:
分层类对象的布局,即基类和虚拟基类
指向成员的布局
传递隐藏函数参数(例如,this)
如何调用虚函数:
Vtable 内容和布局
指向 vtable 的指针在对象中的位置
查找 this 指针的调整
查找基类偏移量
通过指向成员的指针调用函数
管理模板实例
名称的外部拼写(“名称修饰”)
静态对象的构造和销毁
抛出和捕获异常
标准库的一些细节:
实现定义的细节
typeinfo 和运行时类型信息
对成员的内联函数访问
您还可以添加不同的 C++ 编译器以不同的方式实现名称修饰,从而无法在 Solaris 上直接将 OCCI 与 GCC 一起使用。
你也许可以让某些东西发挥作用,但你所做的任何事情充其量都是极其脆弱的。下一个操作系统或 C++ 运行时更新可能会破坏事情,您可能无法解决问题。
除非您正在编写非常简单的应用程序,否则我强烈建议您只使用 Solaris Studio 编译器 - 并熟悉包括性能分析、内存检查甚至竞争条件检测在内的整套工具,我认为其中大部分是优于与 GCC 一起使用的工具。
于 2016-05-31T00:23:32.617 回答