2017-04-17 154 views
1

我意識到這個問題已被問到很多倍在StackOverflow和其他網站;在回顧這些資源後,我仍然處於虧損狀態。OpenGL GLFW:未定義引用'glfwInit'

我只是試圖讓我的機器上的OpenGL(Windows 7 64位)與GLFW一起工作。

我遇到的問題與許多其他人一樣:我得到單數鏈接器錯誤:「未定義引用'glfwInit'。」我試圖編譯的代碼是最簡單的(在一個文件Test.cpp中)。

#include <iostream> 
#include <GLFW/glfw3.h> 
int main() 
{ 
    std::cout << "hello world" << std::endl; 
    glfwInit(); 
    return 0; 
} 

我使用一個簡單的生成文件以試圖編譯:

Test: Test.o 
    g++ -o Test -L./lib -lglew32 -lglfw3 -lopengl32 -lglu32 -lgdi32 Test.o 

Test.o: Test.cpp 
    g++ -I./include -c Test.cpp 

其他信息:
*使用克++編譯(MINGW32)
* lib文件夾包含glfw3.dll,libglfw3 .a和libglfw3dll.a(從GLFW網站下載的Win32版本 - Windows預編譯庫)
* include文件夾包含一個名爲GLFW的文件夾,其中包含glfw3.h和glfw3native.h(來自下載的GLFW - include文件夾)

我曾嘗試:
*從GLFW
使用64位版本*使用的IDE(Eclipse中,VS)
*在建議GLFW Undefined References
*在What is an undefined reference/unresolved external symbol error and how do I fix it?建議(交換鏈接參數順序)
*建議在OpenGL with Eclipse CDT + MinGW + GLEW + GLFW: Undefined References
*試圖使用CMake自己編譯庫,但沒有看到在該進程中創建的任何.a,.lib或.dll文件。

請讓我知道,如果額外的信息會有所幫助。

+1

我的建議是:而不是使用部分路徑(-L./lib),使用完整路徑 – Amadeus

+0

@Amadeus:感謝您的建議。給它一個鏡頭,但似乎沒有任何改變(似乎鏈接器能夠正確定位所有庫 - 如果無法找到glfw3,它會給出不同的錯誤)。 –

回答

2

終於想通了我的問題很多小時後。

將libglfw3.a文件留在與gl​​fw3.dll相同的目錄中(如果嘗試動態鏈接)會混淆鏈接器。如果動態鏈接,請將其刪除 - 您需要的僅僅是dll和/ include文件夾。

此外,添加

#define GLFW_DLL 

的包括上述聲明,如果有一個DLL鏈接。