У меня есть статическая библиотека, которую я создал с помощью MinGW, я пытаюсь связать эту библиотеку из приложения Qt. Я продолжаю получать ошибки компоновщика, вызванные одним из объектных файлов в библиотеке. Этот файл фактически объявляет пару заголовков Boost, один для использования shared_ptr, а другой, чтобы я мог сделать класс не копируемым. Я полагаю, что использование этой функциональности повышения является причиной проблемы, но я понятия не имею, почему. Если я закомментирую классы в приложении Qt, которые используют класс, определенный в файле, приложение Qt связывается нормально. Это часть ошибки вывода:
C: \ л \ построить \ Windows \ MinGW \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :( текст + 0x10a).:
неопределенная ссылка на
`__Gxx_personality_sj0'
C: \ л \ построить \ Windows \ MinGW \ libfoo.a (foo_ctis.cpp.obj):. Foo_ctis.cpp :( текст + 0x12f):
неопределенная ссылка на
`_Unwind_SjLj_Register '
C: \ л \ построить \ Windows \ MinGW \ libfoo.a (foo_ctis.cpp.obj):. Foo_ctis.cpp :( текст + 0x203):
неопределенная ссылка на
`_Unwind_SjLj_Resume '
C: \ л \ построить \ Windows \ MinGW \ libfoo.a (foo_ctis.cpp.obj):. Foo_ctis.cpp :( текст + 0x20e):
неопределенная ссылка на
`_Unwind_SjLj_Unregister '
C: \ л \ построить \ Windows \ MinGW \ libfoo.a (foo_ctis.cpp.obj):. Foo_ctis.cpp :( текст + 0x226):
неопределенная ссылка на
`__Gxx_personality_sj0'
C: \ л \ построить \ Windows \ MinGW \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :( текст + 0x24b).:
неопределенная ссылка на
`_Unwind_SjLj_Register '
C: \ л \ построить \ Windows \ MinGW \ libfoo.a (foo_ctis.cpp.obj):. Foo_ctis.cpp :( текст + 0x31f):
неопределенная ссылка на
`_Unwind_SjLj_Resume '
C: \ л \ построить \ Windows \ MinGW \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :( текст + 0x32a).:
неопределенная ссылка на
`_Unwind_SjLj_Unregister '
C: \ л \ построить \ Windows \ MinGW \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :( текст $ _ZN5boost6detail12shared_countC1IN3foo25foo_SomeClassImplEEEPT_ [подталкивание :: подробно :: shared_count :: shared_count (Foo :: foo_SomeClassImpl. *)] + 0xc):
неопределенная ссылка на
`__Gxx_personality_sj0'
C: \ л \ построить \ Windows \ MinGW \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :( текст $ _ZN5boost6detail12shared_countC1IN3foo25foo_SomeClassImplEEEPT_ [подталкивание :: подробно :: shared_count :: shared_count (Foo :: foo_SomeClassImpl. *)] + 0x31):
неопределенная ссылка на
`_Unwind_SjLj_Register '
C: \ л \ построить \ Windows \ MinGW \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :( текст $ _ZN5boost6detail12shared_countC1IN3foo25foo_SomeClassImplEEEPT_ [подталкивание :: подробно :: shared_count :: shared_count (Foo :: foo_SomeClassImpl. *)] + 0xfb):
неопределенная ссылка на
`_Unwind_SjLj_Resume '
C: \ л \ построить \ Windows \ MinGW \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :( текст $ _ZN5boost6detail12shared_countC1IN3foo25foo_SomeClassImplEEEPT_ [подталкивание :: подробно :: shared_count :: shared_count (Foo :: foo_SomeClassImpl. *)] + 0x106):
неопределенная ссылка на
`_Unwind_SjLj_Unregister 'collect2: ld
возвращен 1 статус выхода
Еще одна вещь, которую стоит упомянуть, это то, что я использую указатель на реализацию в этом классе.
Любая помощь будет высоко ценится.
Решено:
Я выяснил, что на моем пути была более старая версия GCC, которая была включена в Beng, до того, как моя версия MinGW предоставила GCC. Старая версия была включена в пакет GNUStep, который я имел некоторое время назад. Я думаю, что конфигурация этих разных версий вызывала проблемы. Спасибо Кемиисто, который был на правильном пути в решении проблемы.