Как мне ссылаться на внешние библиотеки для компилятора g ++ в командной строке? - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь скомпилировать и запустить некоторый код C ++, используя библиотеки OpenGL без IDE, используя команду g ++ в файле .bat.

Я потратил некоторое время, пытаясь найти правильный синтаксис для компиляции g ++без удачи. Я знаю, что вы должны связать файлы заголовков для компилятора, чтобы создать файл .o, а затем передать файлы библиотеки компоновщику, чтобы он мог создать исполняемый файл. Объяснения, которые я нашел о синтаксисе g ++, немного поразили меня, поэтому я надеялся на конкретный пример того, как скомпилировать файл .cpp с использованием внешних библиотек.

main.cpp выглядит следующим образом:

#include "GLFW/glfw3.h"
#include <thread>

int main() 
{ 
glfwInit(); 
std::this_thread::sleep_for(std::chrono::seconds(1)); 
glfwTerminate(); 
}

полный путь к glfw3.h: C:\C++\glfw\include\GLFW\glfw3.h

компиляторы .bat файлвыглядит так:

@echo off
g++ -std=c++11^
 -I\C:\C++\glfw\include\^
 -c main.cpp^
 -o main.o
pause

Файл компоновщика .bat:

@echo off
g++ -L\C:\C++\glfw\lib-mingw\libglfw3.a^
 -L\C:\C++\glfw\lib-mingw\libglfw3dll.a^
 -c main.o^
 -o main.exe
pause

Я ожидаю, что компилятор .bat создаст файл main.o, который я могупозже используйте компоновщик для создания файла main.exe, но вместо этого я получаю следующее сообщение об ошибке:main.cpp:1:24: fatal error: GLFW/glfw3.h: No such file or directory compilation terminated.

1 Ответ

0 голосов
/ 21 октября 2019

Спасибо за помощь, выяснил, что проблема была с DLL-файлом для glfw. я удалил libglfw3.a и libglfw3dll.a и поместил файл dll как в двоичный файл для minGW, так и в папку lib. А также помещая заголовочные файлы непосредственно в папку включения minGW.

Наконец, я скомпилировал его с помощью следующей команды сборки в ID кода VS: g++ "-std=c++17", "-g", "-o", "main","-lopengl32","-lgdi32","-lglu32","-lglfw3","main.cpp"

Абсолютно не эксперт и не знаюесли это правильно, но у меня это сработало.

...