簡體   English   中英

帶有g ++編譯器的OpenGL C ++,無法在Windows 10上找到GLFW(無Visual Studio)

[英]OpenGL C++ with g++ compiler, not able to find GLFW on Windows 10 (no Visual Studio)

我正在嘗試使用帶有g ++編譯器的C ++從Scratch設置OpenGL API。 目前我正在嘗試使用GLFW獲得一個簡單的窗口系統,但是當我編譯程序時,它似乎找不到GFLW目錄。

我試圖從頭開始做這個,所以我不打算使用像Visual Studio這樣的任何IDE,我所做的一切都是用notepad ++和使用git bash的命令編寫的。 我想這樣做,我知道這是一項額外的工作,但這是我想要實現的目標。

我的項目文件夾看起來像這樣:

-TestProject
    -main.cpp
    -GFLW
        -gflw3.h

在我的main.cpp文件中,我復制粘貼了GFLW文檔中的代碼:

#include <GLFW/glfw3.h>

int main(void)
{
    GLFWwindow* window;

    /* Initialize the library */
    if (!glfwInit())
        return -1;

    /* Create a windowed mode window and its OpenGL context */
    window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
    if (!window)
    {
        glfwTerminate();
        return -1;
    }

    /* Make the window's context current */
    glfwMakeContextCurrent(window);

    /* Loop until the user closes the window */
    while (!glfwWindowShouldClose(window))
    {
        /* Render here */
        glClear(GL_COLOR_BUFFER_BIT);

        /* Swap front and back buffers */
        glfwSwapBuffers(window);

        /* Poll for and process events */
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}

要編譯程序,我使用git bash和這個命令:

g++ main.cpp -o WindowApp.exe

現在應該創建一個exe,這使我能夠打開一個窗口,僅此而已。 顯然我做錯了,因為我得到的錯誤消息是找不到目錄GFLW 這是一個問題。

基本上我想在這里使用ChernoProject這個教程,但不必使用Visual Studio或任何其他IDE。 我知道他使用的文件比我不同,並且他做了一些名為Linking東西但是我不明白這是如何適應我的極簡主義設置的。

您將GLFW/glfw3.h包含在編譯器搜索路徑(帶尖括號)中,但標題位於項目的目錄樹中。 編譯器不會在項目樹中搜索系統頭(包括尖括號),除非您通過傳遞-Iinclude_directory參數明確告訴它這樣做。 因此,在您的情況下,您需要包括如下所示的標題: #include "GLFW/glfw3.h" (推薦),或添加-I. 告訴編譯器在當前目錄中搜索系統頭的參數。

還有關於鏈接 - 這將是解決標題問題后的下一個問題。 您的編譯命令如下所示: g++ main.cpp -o WindowApp.exe並且不包含任何要鏈接的庫。 如果你正在使用MinGW,它必須包含以下參數,用於靜態鏈接到OpenGL和GLFW3: -lmingw32 -lglfw3 -lopengl32 -lgdi32 -luser32

例如,我對此項目的首選設置是:

-ProjectDirectory
    -bin
        -glfw3.dll (if you want to use dll)
    -include
        -GLFW
            -glfw3.h
            -glfw3native.h
    -lib
        -libglfw3.a
        -libglfw3dll.a (if you want to use dll)
    -src
        -main.cpp
    -build.bat

使用build.bat的以下內容(將"Your actual path to g++"更改"Your actual path to g++"的路徑,或者如果它位於路徑變量中,則將其設置為"g++" ):

@ECHO OFF

REM Path to g++
SET G="Your actual path to g++"

SET OBJECTS=
REM Recursive every .cpp file in ./src
FOR /R "./src" %%a IN (*.cpp) DO (
    CALL SET OBJECTS=%%OBJECTS%% "%%a"
)

@ECHO ON

%G% %OBJECTS% -obin/a.exe -Iinclude -Llib -lmingw32 -lglfw3 -lopengl32 -lgdi32 -luser32

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM