0

HP-UX 11.31 と gcc 4.4.3 で Oracle 11 を実行しています。aCCでビルドしたので、occiにリンクする方法はないようです。これに対する回避策はありますか?

私は、基本的に接続をプロキシするライブラリを何らかの方法で構築できるというばかげた考えを持っていました-gccによってリンクできる何らかの方法でaCCを使用してライブラリを構築します。これは可能ですか?

4

1 に答える 1

2

いいえ、それを回避する方法はありません。

異なる C コンパイラには、標準の ABI を使用する交換可能なコードがあります。それらのオブジェクト コードを多かれ少なかれ免責で混ぜ合わせることができます。

ただし、さまざまな C++ コンパイラにはさまざまな規則があり、オブジェクト コードに互換性がないことを意味します。これらはクラス レイアウト (特に複数の継承階層と恐ろしい「死のダイアモンド」) に関連していますが、名前マングリング規則と例外処理にも関連しています。あるコンパイラのオブジェクトを別のコンパイラに誤ってリンクすることがないように、名前マングリング スキームは意図的に異なったものになっています。

一般に、C++ コンパイラを使用してライブラリをビルドする場合は、同じ (または少なくとも互換性のある) C++ コンパイラを使用してコードをリンクする必要があります。そして、それはほとんどの場合、同じファミリのコンパイラを意味します。たとえば、コードが G++ 4.4.2 でビルドされていても、G++ 4.5.0 を使用できる場合があります。ただし、aCC と G++ を混在させることはできません。

于 2010-11-30T08:31:19.920 に答える