2017-04-17 152 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链接。