2010-11-10 3 views
0

У меня есть сторонняя статическая библиотека, которая была построена на AIX с gcc. Когда я пытаюсь связать эту библиотеку с помощью компилятора xlC AIX, я получаю все виды неразрешенных символов. Я считаю, что это связано с различиями в названии. Если я получаю измененные имена из библиотеки с помощью команды nm, есть ли что-то принципиально неправильное в построении двоичного кода с помощью компилятора xlC, если он может найти символы, которые он ищет? Какие проблемы я прошу?связывает статическую библиотеку C++, созданную gcc, с программой, скомпилированной с помощью xlC?

ответ

3

Это, скорее всего, не сработает; см. вопрос C++ Faq Lite.

C++ намного сложнее, чем C, и есть много дополнительных вещей, которые могут быть несовместимы.

Для нескольких примеров совместима обработка исключений? Являются ли объекты данных одинаковыми (в C, порядок указан, но на C++ он может варьироваться в зависимости от спецификаторов доступа)? Работают ли vtables одинаково? Как обрабатывается dynamic_cast?

Разница в управлении именами мешает вам связывать, но есть много других различий, которые могут вас укусить.

Возможно, вам лучше использовать версию gcc, которую они сделали. Это то, что я должен был сделать в аналогичном проекте один раз.

+0

спасибо. – ojblass

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