Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.69
InfoMaster
25 / 14 / 1
Регистрация: 12.08.2011
Сообщений: 276
#1

Как правильно подключить lib - C++

07.07.2014, 11:43. Просмотров 2360. Ответов 39

Добрый день.
Пишу консольную программу на C++ (без использования Qt) с помощью редактора Qt Creator.

Она работает, но в Qt уж очень хочется понять, как правильно подключить библиотеки через файл *.pro
Если подключать так, то все работает:
C++
1
2
3
#pragma comment(lib,"opengl32.lib")
#pragma comment(lib,"glu32.lib")
#pragma comment(lib,"glut32.lib")
Но при удалении #pragma... и добавлении в *.pro кода:
C++ (Qt)
1
2
INCLUDEPATH += C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Include/gl
LIBS += -LC:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib -lopengl32 -lglut32 -lglu32
появляются ошибки LNK2019

В чем проблема? Может я не правильно что-то пишу в *.pro
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2014, 11:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как правильно подключить lib (C++):

Как в VS 2015 устранить ошибку LNK 1104 cannot open file 'fltkd.lib wsock32.lib comct132.lib fltkjpegd.lib'? - C++
как устранить ошибку LNK 1104 в visual studio community 2015? пункта C/C++ в properties нету Можете сказать куда его перенесли или...

Как подключить библиотеку (*.lib) - C++
Нашел библиотеку для загрузки изображений: http://www.sources.ru/cpp/cpp_cximage.shtml Не пойму как в свой проект подключить. У меня...

как подключить dll и lib SDL - C++
как подключить к проекту(в Visual Studio 2010) библиотеку SDL?// есть SDL.dll, SDL.lib и SDLmain.lib и еще папка с include'ами

Как подключить lib к Code::Blocks - C++
Всем привет. Я не могу подключить к Code::Blocks библиотеку .lib Я делаю вот так: Project -> Build options.. далее иду на вкладку linker...

Borland C++ 3.0 - Как подключить LIB файл к проекту? - C++
Добрый день! Мне необходимо использовать стороннюю библиотеку функций. Имеется один LIB и один заголовочный файл. Вроде бы делаю все...

Как в Borland C++ к проекту подключить lib библиотеку? - C++
Как в Borland C++ к проекту подключить lib библиотеку?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
InfoMaster
25 / 14 / 1
Регистрация: 12.08.2011
Сообщений: 276
07.07.2014, 18:23  [ТС] #16
Как вот такой код написать в *.pro файле:
C++
1
2
3
4
5
#if defined(linux) || defined(_WIN32)
#include <GL/glut.h> //Для Linux и Windows
#else
#include <GLUT/GLUT.h>  //Для Mac OS
#endif
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
07.07.2014, 20:34 #17
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Что-то странное. Без проблем собирал приложения под ms из Creator.
На самом деле, перечислять библиотеки нет необходимости, они перечислены в qmake.conf
Достаточно указать каталог библиотек в переменной окружения LIB.
Ради интереса окружение почистил, задал в .pro

Код
LIBS+=-L"C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib"
LIBS+=opengl32.lib glu32.lib
qmake+nmake работает. В сreator пришлось удалить все остальные тулкиты, после этого тоже собралось.
InfoMaster
25 / 14 / 1
Регистрация: 12.08.2011
Сообщений: 276
07.07.2014, 21:09  [ТС] #18
Блин всё равно не рубит... uglyPinokkio напишите пожалуйста код *.pro и *.cpp который у вас заработал.
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
07.07.2014, 21:19 #19
Сам ничего не делал. Взял:

Код
D:\Qt\Qt5.3.1_MS\Examples\Qt-5.3\opengl\cube
Собрал. Потом ради интереса снес переменную окружения LIB, поправил проект,

Код
QT       += core gui widgets

TARGET = cube
TEMPLATE = app

SOURCES += main.cpp

qtHaveModule(opengl) {
    QT += opengl

    SOURCES += mainwidget.cpp \
       geometryengine.cpp

    HEADERS += \
        mainwidget.h \
        geometryengine.h

    RESOURCES += \
        shaders.qrc \
        textures.qrc
}

LIBS+=-L"C:/Program Files/Microsoft SDKs/Windows/v7.0A/Lib" -L"D:/MVS10/VC/lib"
LIBS+=opengl32.lib glu32.lib

# install
target.path = $$[QT_INSTALL_EXAMPLES]/opengl/cube
INSTALLS += target
И еще раз собрал.
Приложение не в 64 бита случайно собирается?.
В 64 бита именно так и будет.
InfoMaster
25 / 14 / 1
Регистрация: 12.08.2011
Сообщений: 276
08.07.2014, 12:09  [ТС] #20
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Потом ради интереса снес переменную окружения LIB, поправил проект
Поясните пожалуйста... А то я не понял, что вы убрали
Avazart
Эксперт С++
7145 / 5322 / 275
Регистрация: 10.12.2010
Сообщений: 23,556
Записей в блоге: 17
08.07.2014, 16:15 #21
Цитата Сообщение от InfoMaster Посмотреть сообщение
Но при удалении #pragma... и добавлении в *.pro кода:
После добавления в *.pro делал "Меню"->"Сборка"->"Очистить все", "Run qmake" ?
Надо делать после каждой правки pro-файла.
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
08.07.2014, 16:45 #22
Цитата Сообщение от InfoMaster Посмотреть сообщение
Поясните пожалуйста... А то я не понял, что вы убрали
http://windata.ru/windows-7/nastrojk...y-v-windows-7/

В переменной окружения LIB могут быть перечислены пути, по которым компилятор ищет библиотеки.
Для компилятора ms она может выглядеть так:

Код
LIB=d:\MVS10\VC\LIB;C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib
В этом случае в .pro в переменной LIBS эти пути можно не указывать.
InfoMaster
25 / 14 / 1
Регистрация: 12.08.2011
Сообщений: 276
08.07.2014, 22:14  [ТС] #23
Цитата Сообщение от Avazart Посмотреть сообщение
После добавления в *.pro делал "Меню"->"Сборка"->"Очистить все", "Run qmake" ?
Надо делать после каждой правки pro-файла.
Добавил к *.pro файлу код:
Код
LIBS+=-L"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib" -L"C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64"
LIBS+=opengl32.lib glut32.lib
Потом сделал: "Меню"->"Сборка"->"Очистить все", "Run qmake"

Количество ошибок уменьшилось до 1-й:
Код
main.obj:-1: ошибка: LNK2019: ссылка на неразрешенный внешний символ _gluOrtho2D@32 в функции "void __cdecl reshape(int,int)" (?reshape@@YAXHH@Z)
Avazart
Эксперт С++
7145 / 5322 / 275
Регистрация: 10.12.2010
Сообщений: 23,556
Записей в блоге: 17
08.07.2014, 22:20 #24
Значит путь не верное указан, не подхватывает.
C++ (Qt)
1
LIBS+=opengl32.lib glut32.lib
Расширение не нужно указывать, просто
C++ (Qt)
1
LIBS+=opengl32 glut32
InfoMaster
25 / 14 / 1
Регистрация: 12.08.2011
Сообщений: 276
08.07.2014, 22:27  [ТС] #25
Цитата Сообщение от Avazart Посмотреть сообщение
Расширение не нужно указывать, просто
Только вот он почему то ищет тогда файл:
:-1: ошибка: LNK1104: не удается открыть файл "opengl32.obj"
Avazart
Эксперт С++
7145 / 5322 / 275
Регистрация: 10.12.2010
Сообщений: 23,556
Записей в блоге: 17
08.07.2014, 22:35 #26
Цитата Сообщение от InfoMaster Посмотреть сообщение
олько вот он почему то ищет тогда файл:
:-1: ошибка: LNK1104: не удается открыть файл "opengl32.obj"
Наверное -l зря убрал.

Ну вот пример подключения OpenCV
C++ (Qt)
1
2
INCLUDEPATH += C:/OpenCV2.2/include
LIBS += -LC:\OpenCV2.2\lib -lopencv_core220 -lopencv_imgproc220 -lopencv_highgui220
Вот boost
C++ (Qt)
1
2
INCLUDEPATH += "C:/Program Files/boost VC++/boost_1_50"
LIBS        += -L"C:/Program Files/boost VC++/boost_1_50/lib" -lboost_regex-vc100-mt-1_50
Т.е рабочие мои примеры, у меня MSVC2010
InfoMaster
25 / 14 / 1
Регистрация: 12.08.2011
Сообщений: 276
08.07.2014, 22:47  [ТС] #27
Спасибо... Да -l нужны... но теперь снова куча ссылок на неразрешенный внешний символ... Буду пытаться.
Avazart
Эксперт С++
7145 / 5322 / 275
Регистрация: 10.12.2010
Сообщений: 23,556
Записей в блоге: 17
08.07.2014, 22:48 #28
InfoMaster, Очистить,qmake не забыл после правки ?

Кстати чем тебе Qt-обвертка не подходит ?
InfoMaster
25 / 14 / 1
Регистрация: 12.08.2011
Сообщений: 276
08.07.2014, 22:54  [ТС] #29
Да нажимаю очистить всё... потом запускаю qmake... и начинаю отладку

Добавлено через 3 минуты
Цитата Сообщение от Avazart Посмотреть сообщение
Кстати чем тебе Qt-обвертка не подходит ?
Не совсем понял вопрос...
Avazart
Эксперт С++
7145 / 5322 / 275
Регистрация: 10.12.2010
Сообщений: 23,556
Записей в блоге: 17
08.07.2014, 23:17 #30
http://qt-project.org/doc/qt-4.8/qtopengl.html
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2014, 23:17
Привет! Вот еще темы с ответами:

Не могу подключить библиотеку d3dx9.lib - C++
Я занимаюсь по книге &quot;Искусство программирования игр на С++&quot;. И на первом же уроке обломился...:-| Там нужно было подключить стандартные...

Как правильно подключить модули? - C++
Задача: Даны натуральное число n, действительные числа x1,y1; x2,y2;... xn,yn;. Найти площадь n-угольника, вершины которого при некотором...

Как правильно подключить curl библиотеку? - C++
Здравствуйте, я хотел в своем проекте использовать библиотеку curl, для этого я: 1. Скачал архив з оф. сайта. 2. Затем по инструкции в...

Как правильно подключить библиотеку SDL - C++
Здравствуйте, подскажите, пожалуйста, как правильно подключить библиотеку SDL. Я пользуюсь компилятором Code::Blocks. При подключении...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.07.2014, 23:17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru