Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Hrundel от Январь 17, 2014, 23:42



Название: Каждый раз одни и те же грабли. Объясните раз и на всегда. ERROR: LNK 2019
Отправлено: Hrundel от Январь 17, 2014, 23:42
Люди, дорогие,

объясните раз и на всегда как избегать такой ошибки. Очень часто получаю такую хрень:

Код:
LNK2019: unresolved external symbol __imp__glewInit@0 referenced in function "protected: virtual void __thiscall GLViewPort::initializeGL(void)" (?initializeGL@GLViewPort@@MAEXXZ)

Причем проект только начал.
Поместил в проект библиотеку "glew"
подключил заголовок, вызвал функцию, ошибка LNK 2019

Я так подозреваю он хочет библиотеку (lib)

В *.pro файле ничего не пишу, так как не знаю, что надо прописать.
Объясните пожалуйста как нужно правильно подключать библиотеки, чтобы так не париться каждый раз.
А то всегда каким-то чудом нахожу решения, а потом сам не понимаю почему работает.


Название: Re: Каждый раз одни и те же грабли. Объясните раз и на всегда. ERROR: LNK 2019
Отправлено: kambala от Январь 17, 2014, 23:51
LIBS += -l<имя/путь файла с расширением lib>


Название: Re: Каждый раз одни и те же грабли. Объясните раз и на всегда. ERROR: LNK 2019
Отправлено: Hrundel от Январь 18, 2014, 00:23
Упала с кодом -1073741515!!!

Цитировать
The program has unexpectedly finished.
... exited with code -1073741515

Код:
LNK4099: PDB 'vc90.pdb' was not found with 'c:\QtSDK\Desktop\Qt\4.8.1\msvc2008\lib\qtmaind.lib' or at 'F:\Qt\OPEN_GL_3D_ENGINE\OGL3DEngine-build-desktop-Qt_4_8_1_for_Desktop_-_MSVC2008__Qt_SDK__Debug\debug\vc90.pdb'; linking object as if no debug info

Добавил *.dll все заработало. Спасибо!!!


Название: Re: Каждый раз одни и те же грабли. Объясните раз и на всегда. ERROR: LNK 2019
Отправлено: lit-uriy от Январь 18, 2014, 01:37
Поместил в проект библиотеку "glew"
Что значит поместил? просто положил в каталог с проектом что-то?
подключил заголовок
Правильно, это шаг №2

Правильная последовательность:
1) Добавить в проект библиотеку, в pro-файл добавить:
INCLUDEPATH += path/to/library/include
LIBS += -lname // можно без расширения, qmake сам его подставляет в зависимости от платформы.
LIBS += -Lpath/to/library // либо до .lib, либо до .a

2) Добавить в исходный код заколовочный(-ые) файл(ы) одним из следующих способов:
a) если в п.1 path/to/library/include содержит подкаталоге (как например Qt), то
Код
C++ (Qt)
#include <SubPath/Header> // где Header - собственно имя файла
b) если подкаталогов нет и все заголовочники лежат в path/to/library/include, то
Код
C++ (Qt)
#include <Header>