Связывание статической библиотеки C ++, построенная GCC с программой, собранной XLC?
-
30-09-2019 - |
Вопрос
У меня есть сторонняя статическая библиотека, которая была построена на AIX с GCC. Когда я пытаюсь связаться с этой библиотекой, используя компилятор XLC AIX, я получаю все виды неразрешенных символов. Я верю, что это связано с различиями в имен. Если я получаю групповые имена из библиотеки с командой NM, есть ли что-то в корне неправильное со строя бинар с компилятором XLC, если он может найти символы, которые он ищет? Какие проблемы я прошу?
Решение
Это очень вероятно, не будет работать; увидеть C ++ FAQ Lite Вопрос об этом.
C ++ намного сложнее, чем C, и есть много дополнительных вещей, которые могут не быть совместимыми.
Для нескольких примеров совместим это совместимость исключения? Представляют ли объекты данных, выложенные таким же образом (в C, заказ, как указано, но в C ++ он может варьироваться в зависимости от спецификаторов доступа)? Делайте ли VTables то же самое? Как dynamic_cast
обрабатывается?
Разница в названии Mangling останавливает вас от связывания, но есть много других различий, которые могут укусить вас.
Вы, вероятно, лучше используете версию GCC, они сделали. Это то, что я должен был сделать в аналогичном проекте один раз.