У меня есть статическая библиотека, которую я создал с помощью MinGW, я пытаюсь связать эту библиотеку с приложением Qt. Я продолжаю получать ошибки компоновщика, вызванные одним из объектных файлов в библиотеке. Этот файл фактически объявляет пару заголовков Boost, один для использования shared_ptr, а другой, чтобы я мог сделать класс noncopyable. Я считаю, что использование этой функции повышения - вот что вызывает проблему, но я понятия не имею, почему. Если я прокомментирую классы в приложении Qt, которые используют класс, определенный в файле, ссылки приложения 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: \ blah \ build \ windows \ mingw \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :(. text + 0x24b): undefined ссылка на `_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 :(. text $ _ZN5boost6detail12shared_countC1IN3foo25foo_SomeClassImplEEEPT_ [boost :: detail :: shared_count :: shared_count (foo :: foo_SomeClassImpl *)] + 0xc): undefinedСсылка на `__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. каст :(текст $ _ZN5boost6detail12shared_countC1IN3foo25foo_SomeClassImplEEEPT_ [подталкивание :: подробно :: shared_count :: shared_count (Foo :: foo_SomeClassImpl *)] + 0xfb). неопределенная ссылка на ` _Unwind_SjLj_Resume»
C: \ blah \ build \ windows \ mingw \ libfoo.a (foo_ctis.cpp.obj): foo_ctis.cpp :(.текст $ _ZN5boost6detail12shared_countC1IN3foo25foo_SomeClassImplEEEPT_ [подталкивание :: подробно :: shared_count :: shared_count (Foo :: foo_SomeClassImpl *)] + 0x106): неопределенная ссылка на ` collect2 _Unwind_SjLj_Unregister»: л.д. возвращается 1 состояние выхода
Один другой Дело в том, что я использую указатель на реализацию в этом классе. Любая помощь будет высоко оценена.
Решено: Я выяснил, что у меня была старая версия GCC на моем пути, которая была включена до моей версии GCC, поставляемой в MinGW. Старая версия была включена в пакет GNUStep, который я отчасти возвращался. Я думаю, что конфигурация этих разных версий вызывала проблемы. Благодаря kemiisto, который был на правильном пути в решении проблемы.
Hi kemiisto, спасибо за ваш ответ. Я считаю, что использую ту же версию MinGW. Я использую CMake для создания различных типов make-файлов. Я пытался создать make-файлы для MinGW, и я получал ошибки, поэтому я включил C: \ Qt \ 2009.05 \ mingw \ bin в свой путь командной строки.После этого CMake смог создать make-файлы MinGW, и я смог использовать mingw32-make для создания статической библиотеки. Разве это не будет использовать ту же версию? Я не думаю, что у меня есть другая версия на моем компьютере. – csmithmaui
@csmithmaui: в этом случае у меня есть еще одна идея. Я добавил некоторую информацию в свое сообщение. – Wildcat
Я проанализировал свой путь, и на самом деле у меня нет ни одного из тех, что вы разместили выше. Я просто C: \ Qt \ 2009.05 \ mingw \ bin. Моя статическая библиотека строит отлично в командной строке после включения пути MinGW, который я только что сделал. Проблема в том, что когда я пытаюсь связать свою библиотеку с QtCreator, я получаю ошибки компоновщика. Я прочитал ссылки, которые вы разместили, но я не думаю, что это моя проблема. Кроме того, если я беру любые ссылки на класс, содержащийся в файле, о котором идет речь, все остальное связывает в порядке. Я действительно ценю твою помощь. – csmithmaui