我们在HP-UX 11.31和gcc 4.4.3上运行Oracle 11。似乎没有办法链接到occi,因为它是用aCC构建的。有没有解决方法呢?
我有一个愚蠢的想法,我可以以某种方式构建一个基本上代理连接的库 - 以某种方式使用aCC构建库,可以通过gcc链接。这可能吗?
答案 0 :(得分:2)
不,没有办法解决这个问题。
不同的C编译器使用标准ABI具有可互换的代码。你可以或多或少地混合和匹配他们的目标代码而不受惩罚。
但是,不同的C ++编译器有各种不同的约定,这意味着它们的目标代码不兼容。这些与类布局有关(特别是在多继承层次结构和可怕的'死亡之钻'),但也与名称修改约定和异常处理有关。故意将名称修改方案设置为不同,以便您不会意外地将一个编译器中的对象链接到另一个编译器。
通常,如果库是使用C ++编译器构建的,则必须使用相同的 - 或至少兼容的 - C ++编译器链接代码。而这几乎总是意味着来自同一家族的编译器。例如,即使代码是使用G ++ 4.4.2构建的,也可以使用G ++ 4.5.0。但是,您将无法将aCC与G ++混合使用。