2016-07-27 1 views
2

Я пытаюсь запустить проект QT в Windows, который я разработал на Linux Ubuntu. К сожалению, я не могу управлять им, чтобы правильно связать библиотеку boost. Вот подробное описание проблемы.Неопределенная ссылка на расширение библиотек в создателе QT в Windows

Я скачал MinGW от https://nuwen.net/mingw.html, версия 13.5, так что версия gcc версии 5.3.0 соответствует версии QG MinGW. Причина выбора этой версии MinGW заключается в том, что она содержит библиотеки boost для сжатия, такие как zlib. Из командной строки я без проблем компилирую и запускаю свою программу:

g ++ -std = C++ 11 -w -IC:/MinGW/include -LC:/MinGW/lib bAya.cpp Ao Bo Co - o baya -lboost_iostreams -lz -lbz2

где A, B, C - мои предварительно скомпилированные объектные файлы.

В создателе QT я выбрал компилятор MinGW (C: \ MinGW_53 \ MinGW \ bin \ g ++. Exe) и создал новый набор по умолчанию с компилятором.

Мой .pro файл выглядит следующим образом:

MAKE_CXXFLAGS += -std=c++11 

INCLUDEPATH += C:/MinGW_53/MinGW/include \ 
C:/Users/kuzk/Documents/src 

LIBS += -LC:/MinGW_53/MinGW/lib/mylib \ 
-lboost_system \ 
-lboost_iostreams \ 
-lz \ 
-lbz2 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

SOURCES += main.cpp\ 
    mainwindow.cpp \ 
../src/A.cpp \ 
../src/B.cpp \ 
../src/C.cpp 

HEADERS += mainwindow.h \ 
../src/A.h \ 
../src/B.h \ 
../src/C.h 

Папка C:/MinGW_53/MinGW/Библиотека/MyLib содержит мои .a файлы, такие как libboost_iostreams.a

Когда я построить его, Я получаю много неопределенных эталонные ошибки, такие как
ошибки: неопределенная ссылка на `повысить :: iostreams :: Zlib :: default_strategy»

Интересно, что если C:/MinGW_53/MinGW/Lib/MYL ib содержит также libstdC++. a Я также получаю ошибки привязки к std :: cout, std :: ifstream и т. д.

Я в настоящее время застрял, и я буду очень полезен для любой обратной связи.

Бест, Константин

+0

Вы повторно запустили qmake? –

+0

Да, из меню «Построение» я сначала запускаю qmake, а затем перестраиваю проект. Еще не успел ... – Konstantin

+0

Возможно, это больше о [тег: qt-creator], чем те другие теги. –

ответ

0

Добавление пути к библиотеке для boost_iostreams:

-LC:/MinGW/lib \ 

после строки:

LIBS += -LC:/MinGW_53/MinGW/lib/mylib \ 

должен это исправить.

+0

Спасибо за ответ! C:/MinGW_53/MinGW/lib/mylib - путь библиотеки к boost_iostreams. Я скопировал в mylib libboost_iostreams.a и другие необходимые файлы .a. Если я дам вместо C:/MinGW_53/MinGW/lib/как путь к библиотеке, я получаю ошибки связывания даже для std :: cout. Любая идея, что это может означать? .. – Konstantin

+0

Похоже, что это даже не связь со стандартной библиотекой. Попробуйте добавить 'QMAKE_CXXFLAGS + = -stdlib = libC++' – kenba

+0

Мой компилятор - g ++, я получаю непризнанную опцию командной строки. – Konstantin

0

В конце концов я смог решить проблему. Вот что я сделал. Я использую QT 5.7 на Windows, 10.

  1. Я скомпилировал повышающего с помощью консоли Qt, как описано здесь: http://cpp-qt-mac-win.blogspot.co.uk/2011/10/qt-boost-for-beginners-step-by-step.html

  2. Затем я создал новый проект и добавил путей для повышения и необходимые библиотеки, а описанный в моем вопросе.

Важное примечание. Я попытался обновить пути в существующем проекте, запустив qmake, а затем восстановив проект. Я получал те же ошибки, что и старые пути до «стандартного» повышения. Видимо, что-то было кэшировано, и изменения ничего не сделали. Однако, если я дам неправильный путь библиотеке, она жаловалась. Таким образом, QT имеет очень запутанное поведение. Если кто-то может это объяснить, это будет полезно.

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

  • Нет связанных вопросов^_^