Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.96/56: Рейтинг темы: голосов - 56, средняя оценка - 4.96
25 / 14 / 3
Регистрация: 12.08.2011
Сообщений: 276

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

07.07.2014, 11:43. Показов 11918. Ответов 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
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.07.2014, 11:43
Ответы с готовыми решениями:

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

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

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

39
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.07.2014, 16:15
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от InfoMaster Посмотреть сообщение
Но при удалении #pragma... и добавлении в *.pro кода:
После добавления в *.pro делал "Меню"->"Сборка"->"Очистить все", "Run qmake" ?
Надо делать после каждой правки pro-файла.
1
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
08.07.2014, 16:45
Цитата Сообщение от InfoMaster Посмотреть сообщение
Поясните пожалуйста... А то я не понял, что вы убрали
http://windata.ru/windows-7/na... windows-7/

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

Code
1
LIB=d:\MVS10\VC\LIB;C:\Program Files\Microsoft SDKs\Windows\v7.0A\lib
В этом случае в .pro в переменной LIBS эти пути можно не указывать.
1
25 / 14 / 3
Регистрация: 12.08.2011
Сообщений: 276
08.07.2014, 22:14  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
После добавления в *.pro делал "Меню"->"Сборка"->"Очистить все", "Run qmake" ?
Надо делать после каждой правки pro-файла.
Добавил к *.pro файлу код:
Code
1
2
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-й:
Code
1
main.obj:-1: ошибка: LNK2019: ссылка на неразрешенный внешний символ _gluOrtho2D@32 в функции "void __cdecl reshape(int,int)" (?reshape@@YAXHH@Z)
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.07.2014, 22:20
Значит путь не верное указан, не подхватывает.
C++ (Qt)
1
LIBS+=opengl32.lib glut32.lib
Расширение не нужно указывать, просто
C++ (Qt)
1
LIBS+=opengl32 glut32
0
25 / 14 / 3
Регистрация: 12.08.2011
Сообщений: 276
08.07.2014, 22:27  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Расширение не нужно указывать, просто
Только вот он почему то ищет тогда файл:
:-1: ошибка: LNK1104: не удается открыть файл "opengl32.obj"
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.07.2014, 22:35
Цитата Сообщение от 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
1
25 / 14 / 3
Регистрация: 12.08.2011
Сообщений: 276
08.07.2014, 22:47  [ТС]
Спасибо... Да -l нужны... но теперь снова куча ссылок на неразрешенный внешний символ... Буду пытаться.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.07.2014, 22:48
InfoMaster, Очистить,qmake не забыл после правки ?

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

Добавлено через 3 минуты
Цитата Сообщение от Avazart Посмотреть сообщение
Кстати чем тебе Qt-обвертка не подходит ?
Не совсем понял вопрос...
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.07.2014, 23:17
http://qt-project.org/doc/qt-4.8/qtopengl.html
1
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
09.07.2014, 05:39
Code
1
LIBS+=opengl32.lib glut32.lib
Цитата Сообщение от InfoMaster Посмотреть сообщение
Количество ошибок уменьшилось до 1-й:
Нужно добавить еще Glu32.lib

http://msdn.microsoft.com/en-u... 85%29.aspx

Цитата Сообщение от Avazart Посмотреть сообщение
Расширение не нужно указывать
Нужно, ну это вы уже выяснили
1
25 / 14 / 3
Регистрация: 12.08.2011
Сообщений: 276
09.07.2014, 06:50  [ТС]
Всем огромное спасибо разобрался... Файл *.pro выглядит теперь так:
Code
1
2
3
4
5
6
7
8
9
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
 
SOURCES += main.cpp
 
LIBS += -L"C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib"
LIBS += -lopengl32 -lglu32 -lglut32
Начало программы:
C++
1
2
3
4
5
6
#if defined(linux) || defined(_WIN32)
#include <GL/glut.h> //Для Linux и Windows
#else
#include <GLUT/GLUT.h>  //Для Mac OS
#endif
//...
Как только отредактировал файл *.pro:
Меню -> сборка -> Очистить все; Запустить qmake

Компилятор Desktop Qt 5.3 MSVC2012 OpenGL 32bit (Microsoft Visual C++ Compiler 11.0 (amd64))

-> Проблема была в том, что я собирал проект через Desktop Qt 5.3 MSVC2012 OpenGL 64bit (могут быть опечатки, название написал на память)

Запускаем "Сборку"... Все работает. Еще раз всем спасибо.
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
09.07.2014, 07:15
Цитата Сообщение от InfoMaster Посмотреть сообщение
Проблема была в том, что я собирал проект через Desktop Qt 5.3 MSVC2012 OpenGL 64bit
Я знал, я знал:

Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Приложение не в 64 бита случайно собирается?.
В 64 бита именно так и будет.
1
25 / 14 / 3
Регистрация: 12.08.2011
Сообщений: 276
09.07.2014, 08:21  [ТС]
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Я знал, я знал:
А если в 64 бит собирать, то надо подключать opengl64.lib glut64.lib, gl64.lib ?
Или там свои заморочки ?
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
09.07.2014, 08:29
Цитата Сообщение от InfoMaster Посмотреть сообщение
А если в 64 бит собирать, то надо подключать opengl64.lib glut64.lib, gl64.lib ?
Или там свои заморочки
Библиотеки надо брать 64-х битные, они для OpenGL называются ,на сколько я помню, так же, но лежат в другом каталоге. на 64-х битной системе два каталога "Program Files" и "Program Files (x86)", второй для 32-х битных приложений, туда ms ставит по дефолту библиотеки для 32-бит приложений, для 64 - в первый.

UP.

Соврал немного
Для 32-бит:
Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\
Для 64-бит:
Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64
1
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.07.2014, 09:53
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Нужно, ну это вы уже выяснили
Не нужно, читай доку и книги.
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
09.07.2014, 10:13
Цитата Сообщение от Avazart Посмотреть сообщение
Не нужно, читай доку и книги.
http://msdn.microsoft.com/ru-r... 8x58e.aspx

Без расширения оно будет интерпретироваться как имя объектного файла, что собственно и произошло.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.07.2014, 10:51
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Без расширения оно будет интерпретироваться как имя объектного файла, что собственно и произошло.
Че вы мне кидаете ссылку на MS, Qt типа кроссплатформенный фреймворк и то что в виндовс lib в линукс so или a (точно не помню) а потому писать нужно без расширения но зато с приставкой -l
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
09.07.2014, 11:03
Цитата Сообщение от Avazart Посмотреть сообщение
в виндовс lib в линукс so или a (точно не помню) а потому писать нужно без расширения но зато с приставкой -l
в windows .lib, в linux .a для статических библиотек и .so для динамических. qmake пытается генерить Makefail под целевую платформу, в частности для ms убирает -l и дописывает .lib
Иногда полезно понимать что на самом деле происходит.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.07.2014, 11:09
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
в windows .lib, в linux .a для статических библиотек и .so для динамических. qmake пытается генерить Makefail под целевую платформу, в частности для ms убирает -l и дописывает .lib
Иногда полезно понимать что на самом деле происходит.
Для того и пишутся фреймворки что иногда было иногда, а не постоянно.

Если указывать расширения явно и плевать на то что рекомендует Qt то с таким же успехом можно использовать
C++
1
2
3
#pragma comment(lib,"opengl32.lib")
#pragma comment(lib,"glu32.lib")
#pragma comment(lib,"glut32.lib")
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.07.2014, 11:09

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru