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

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

07.07.2014, 11:43. Показов 11031. Ответов 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
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
07.07.2014, 14:55
В Microsoft SDK нет библиотек для MinGW.
Текст ошибок какой?
0
25 / 14 / 3
Регистрация: 12.08.2011
Сообщений: 276
07.07.2014, 15:02  [ТС]
Ошибки вот:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glBegin@4 в функции "void __cdecl display(void)" (?display@@YAXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glClear@4 в функции "void __cdecl display(void)" (?display@@YAXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glColor3f@12 в функции "void __cdecl display(void)" (?display@@YAXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glEnd@0 в функции "void __cdecl display(void)" (?display@@YAXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glLoadIdentity@0 в функции "void __cdecl reshape(int,int)" (?reshape@@YAXHH@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glMatrixMode@4 в функции "void __cdecl reshape(int,int)" (?reshape@@YAXHH@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glVertex2i@8 в функции "void __cdecl display(void)" (?display@@YAXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glViewport@16 в функции "void __cdecl reshape(int,int)" (?reshape@@YAXHH@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ _gluOrtho2D@32 в функции "void __cdecl reshape(int,int)" (?reshape@@YAXHH@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutInit@8 в функции _main
main.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutInitDisplayMode@4 в функции _main
main.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutInitWindowSize@8 в функции _main
main.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutMainLoop@0 в функции _main
main.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutCreateWindow@4 в функции _main
main.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutSwapBuffers@0 в функции "void __cdecl display(void)" (?display@@YAXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutDisplayFunc@4 в функции _main
main.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutReshapeFunc@4 в функции _main
debug\test_window.exe : fatal error LNK1120: неразрешенных внешних элементов: 17
По пути (C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib) у меня лежат библиотеки: OpenGl32.Lib; glu32.Lib; glut32.Lib
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
07.07.2014, 15:18
Цитата Сообщение от InfoMaster Посмотреть сообщение
По пути (C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib)
Code
1
LIBS += -L"C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib"
0
25 / 14 / 3
Регистрация: 12.08.2011
Сообщений: 276
07.07.2014, 15:29  [ТС]
Не помогло... то же набор ошибок
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
07.07.2014, 15:36
Что-то я не пойму, компилятор какой?
0
25 / 14 / 3
Регистрация: 12.08.2011
Сообщений: 276
07.07.2014, 15:39  [ТС]
Microsoft Visual C++ Compiler 11.0 (x86)
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
07.07.2014, 15:54
Почти уверен, что чтобы мс компиль сработал, вам понадобится работать через мейкфайл. На всякий случай приведите что компилятору идет на вход в командной строки (в итоге).
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
07.07.2014, 15:55
Так подключаются библиотеки в MinGW. В MS другой синтаксис.
0
25 / 14 / 3
Регистрация: 12.08.2011
Сообщений: 276
07.07.2014, 15:59  [ТС]
main.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#if defined(linux) || defined(_WIN32)
#include <GL/glut.h> //Для Linux и Windows
#else
#include <GLUT/GLUT.h>  //Для Mac OS
#endif
 
void display()
{
        glClear(GL_COLOR_BUFFER_BIT);
 
        glBegin(GL_QUADS);
        glColor3f(1.0, 1.0, 1.0);
        glVertex2i(250, 450);
        glColor3f(0.0, 0.0, 1.0);
        glVertex2i(250, 150);
        glColor3f(0.0, 1.0, 0.0);
        glVertex2i(550, 150);
        glColor3f(1.0, 0.0, 0.0);
        glVertex2i(550, 450);
        glEnd();
 
        glutSwapBuffers();
}
 
void reshape(int w, int h)
{
        glViewport(0, 0, w, h);
 
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluOrtho2D(0, w, 0, h);
 
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
}
 
int main (int argc, char * argv[])
{
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA); /*Включаем двойную буферизацию и четырехкомпонентный цвет*/
 
        glutInitWindowSize(800, 600);
        glutCreateWindow("OpenGL lesson 1");
 
        glutReshapeFunc(reshape);
        glutDisplayFunc(display);
 
        glutMainLoop();
 
        return 0;
}
test_window.pro:
C++ (Qt)
1
2
3
4
5
6
7
8
9
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
 
SOURCES += main.cpp
 
INCLUDEPATH += "C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Include/gl"
LIBS += -L"C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib" -lopengl32 -lglut32 -lglu32
Консоль сборки:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
17:34:20: Выполняются этапы для проекта test_window...
17:34:20: Настройки не изменились, этап qmake пропускается.
17:34:20: Запускается: «C:\Qt\Tools\QtCreator\bin\jom.exe» 
    C:\Qt\Tools\QtCreator\bin\jom.exe -f Makefile.Debug
    echo 1 /* CREATEPROCESS_MANIFEST_RESOURCE_ID */ 24 /* RT_MANIFEST */ "debug\\test_window.exe.embed.manifest">debug\test_window.exe_manifest.rc
    if not exist debug\test_window.exe if exist debug\test_window.exe.embed.manifest del debug\test_window.exe.embed.manifest
    if exist debug\test_window.exe.embed.manifest copy /Y debug\test_window.exe.embed.manifest debug\test_window.exe_manifest.bak
    link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST /MANIFESTFILE:debug\test_window.exe.embed.manifest /OUT:debug\test_window.exe @C:\Temp\test_window.exe.7188.0.jom
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glBegin@4 в функции "void __cdecl display(void)" (?display@@YAXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glClear@4 в функции "void __cdecl display(void)" (?display@@YAXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glColor3f@12 в функции "void __cdecl display(void)" (?display@@YAXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glEnd@0 в функции "void __cdecl display(void)" (?display@@YAXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glLoadIdentity@0 в функции "void __cdecl reshape(int,int)" (?reshape@@YAXHH@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glMatrixMode@4 в функции "void __cdecl reshape(int,int)" (?reshape@@YAXHH@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glVertex2i@8 в функции "void __cdecl display(void)" (?display@@YAXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__glViewport@16 в функции "void __cdecl reshape(int,int)" (?reshape@@YAXHH@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ _gluOrtho2D@32 в функции "void __cdecl reshape(int,int)" (?reshape@@YAXHH@Z)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutInit@8 в функции _main
main.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutInitDisplayMode@4 в функции _main
main.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutInitWindowSize@8 в функции _main
main.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutMainLoop@0 в функции _main
main.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutCreateWindow@4 в функции _main
main.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutSwapBuffers@0 в функции "void __cdecl display(void)" (?display@@YAXXZ)
main.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutDisplayFunc@4 в функции _main
main.obj : error LNK2019: ссылка на неразрешенный внешний символ _glutReshapeFunc@4 в функции _main
debug\test_window.exe : fatal error LNK1120: неразрешенных внешних элементов: 17
jom: C:\Users\nixon\Documents\Qt\Consol_Program_for_OpenGL\build-test_window-Desktop_Qt_5_3_MSVC2012_OpenGL_32bit-Debug\Makefile.Debug [debug\test_window.exe] Error 1120
jom: C:\Users\nixon\Documents\Qt\Consol_Program_for_OpenGL\build-test_window-Desktop_Qt_5_3_MSVC2012_OpenGL_32bit-Debug\Makefile [debug] Error 2
17:34:21: Процесс «C:\Qt\Tools\QtCreator\bin\jom.exe» завершился с кодом 2.
Ошибка при сборке/установке проекта test_window (комплект: Desktop Qt 5.3 MSVC2012 OpenGL 32bit)
Во время выполнения этапа «Сборка»
17:34:21: Прошло времени: 00:01.
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
07.07.2014, 17:10
Цитата Сообщение от InfoMaster Посмотреть сообщение
Консоль сборки:
Помнится - ms не использует ключ -l

Code
1
LIBS +=-L"C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib" opengl32 glut32 glu32
Странно, что в консоли ключей линкера вообще не видно.
0
25 / 14 / 3
Регистрация: 12.08.2011
Сообщений: 276
07.07.2014, 17:56  [ТС]
Убрал -l ... толку нет... одни и те же ошибки ... Не находит библиотеки ... в чем же проблема ...
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
07.07.2014, 18:04
Попробуй дописать .lib в конце имени каждой библиотеки.
0
25 / 14 / 3
Регистрация: 12.08.2011
Сообщений: 276
07.07.2014, 18:14  [ТС]
К сожалению не помогает
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
07.07.2014, 18:17
Цитата Сообщение от InfoMaster Посмотреть сообщение
К сожалению не помогает
Что-то странное. Без проблем собирал приложения под ms из Creator.
0
25 / 14 / 3
Регистрация: 12.08.2011
Сообщений: 276
07.07.2014, 18:23  [ТС]
Как вот такой код написать в *.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
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
07.07.2014, 20:34
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Что-то странное. Без проблем собирал приложения под ms из Creator.
На самом деле, перечислять библиотеки нет необходимости, они перечислены в qmake.conf
Достаточно указать каталог библиотек в переменной окружения LIB.
Ради интереса окружение почистил, задал в .pro

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

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

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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 бита именно так и будет.
1
25 / 14 / 3
Регистрация: 12.08.2011
Сообщений: 276
08.07.2014, 12:09  [ТС]
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Потом ради интереса снес переменную окружения LIB, поправил проект
Поясните пожалуйста... А то я не понял, что вы убрали
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.07.2014, 12: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-угольника, вершины которого при некотором...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru