2010-11-30 3 views
0

У нас есть Oracle 11, работающий на HP-UX 11.31 и gcc 4.4.3. Кажется, что нет никакого способа связаться с occi, потому что он был построен с помощью CC. Есть ли обходной путь для этого?Можно ли компилировать/ссылаться на occi с gcc на HPUX?

У меня была глупая идея, что я могу как-то создать библиотеку, которая в основном проксировала соединение - каким-то образом создайте библиотеку с помощью CC, с которой можно связать gcc. Это возможно?

ответ

2

Нет, это не так.

Различные компиляторы C имеют взаимозаменяемый код с использованием стандартного ABI. Вы можете смешать и сопоставить свой объектный код более или менее с безнаказанностью.

Однако различные компиляторы C++ имеют множество различных соглашений, которые означают, что их объектный код несовместим. Они относятся к макету классов (особенно в нескольких иерархиях наследования и страшном «алмазе смерти»), но также в соглашениях об управлении именами и обработке исключений. Схемы изменения имени намеренно различаются, поэтому вы не можете случайно связать объекты с одним компилятором с другим.

Как правило, если библиотеки построены с использованием компилятора C++, вы должны связать свой код с использованием того же самого или, по крайней мере, совместимого компилятора C++. И это почти всегда означает компилятор из той же семьи. Например, вы могли бы использовать G ++ 4.5.0, даже если код был построен с G ++ 4.4.2. Однако вы не сможете смешать aCC с G ++.

Смежные вопросы