我们正在尝试将OCCI与GCC一起使用。OCCI是使用sunstudio编译器编译的。有没有可能将OCCI与GCC一起使用,而不是使用sun本机编译器CC?
您不能有效地混合使用多个C++运行时库。
C++运行时实现极其复杂。这篇文章解释了一些复杂性:
C++ABI的稳定性:程序设计语言的发展
C++ABI
C++ABI包括C ABI。此外,它还包括以下内容功能:
分层类对象的布局,即基类和虚拟基类
指向成员的指针布局
传递隐藏函数参数(例如,此)
如何调用虚拟函数:
Vtable内容和布局
指向vtables 的指针在对象中的位置
查找此指针的调整
查找基类偏移
通过指向成员的指针调用函数
管理模板实例
名称的外部拼写("名称篡改")
静态物体的构建和销毁
抛出和捕获异常
标准库的一些细节:
实现定义的详细信息
类型信息和运行时类型信息
对成员的内联功能访问
您还可以添加不同的C++编译器来实现不同的名称篡改,从而使OCCI在Solaris上无法直接与GCC一起使用。
你可能会做一些事情,但你所做的任何事情充其量都是极其脆弱的。下一次操作系统或C++运行时更新可能会中断,您可能无法解决问题。
除非您正在编写非常简单的应用程序,否则我强烈建议您只使用SolarisStudio编译器,并熟悉包括性能评测、内存检查甚至竞争条件检测在内的整套工具,在我看来,其中大部分都优于GCC使用的工具。