2

这让我发疯,我想在第 4.2.1 节之后静态链接到 GLFW.lib。提供的 readme.html 文件我已将 glfw.lib 和 opengl32.lib 添加到 VS 链接器的附加依赖项部分。

我还将包含 glfw.lib 的目录添加到链接器 > 常规下的附加库目录部分。

当然,我已经在我的项目中包含了 glfw.h 文件,但我仍然得到......

Error   1   error LNK2019: unresolved external symbol _glfwInit referenced in function _main    C:\Users\Smith_000\Documents\Visual Studio 2012\Projects\Spark\Spark\main.obj   Spark
Error   2   error LNK2019: unresolved external symbol _glfwTerminate referenced in function _main   C:\Users\Smith_000\Documents\Visual Studio 2012\Projects\Spark\Spark\main.obj   Spark
Error   3   error LNK2019: unresolved external symbol _glfwOpenWindow referenced in function _main  C:\Users\Smith_000\Documents\Visual Studio 2012\Projects\Spark\Spark\main.obj   Spark
Error   4   error LNK2019: unresolved external symbol _glfwSwapBuffers referenced in function _main C:\Users\Smith_000\Documents\Visual Studio 2012\Projects\Spark\Spark\main.obj   Spark
Error   5   error LNK2019: unresolved external symbol _glfwGetWindowParam referenced in function _main  C:\Users\Smith_000\Documents\Visual Studio 2012\Projects\Spark\Spark\main.obj   Spark
Error   6   error LNK2019: unresolved external symbol _glfwGetKey referenced in function _main  C:\Users\Smith_000\Documents\Visual Studio 2012\Projects\Spark\Spark\main.obj   Spark
Error   7   error LNK1120: 6 unresolved externals   C:\Users\Smith_000\Documents\Visual Studio 2012\Projects\Spark\Debug\Spark.exe  1   1   Spark

使用以下(示例)代码...

#include <glfw.h>
#include <stdlib.h>

int main( void )
{
    int running = GL_TRUE;

    // Initialize GLFW
    if( !glfwInit() )
    {
        exit( EXIT_FAILURE );
    }

    // Open an OpenGL window
    if( !glfwOpenWindow( 300,300, 0,0,0,0,0,0, GLFW_WINDOW ) )
    {
        glfwTerminate();
        exit( EXIT_FAILURE );
    }

    // Main loop
    while( running )
    {
        // OpenGL rendering goes here...
        glClear( GL_COLOR_BUFFER_BIT );
        // Swap front and back rendering buffers
        glfwSwapBuffers();
        // Check if ESC key was pressed or window was closed
        running = !glfwGetKey( GLFW_KEY_ESC ) &&
        glfwGetWindowParam( GLFW_OPENED );
    }

    // Close window and terminate GLFW
    glfwTerminate();

    // Exit program
    exit( EXIT_SUCCESS );
}

我究竟做错了什么?

4

2 回答 2

3

确保您的 .exe 文件的文件夹中有 glfw.dll。如果这没有帮助,请添加另一个库 glu32.lib。

我通过在 main 函数之前添加这个来在代码中添加库。有了这个,你可以看到你有哪些库,而无需浏览选项和菜单。

#pragma comment(lib, "GLFW.lib")
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")
于 2013-01-01T03:48:50.867 回答
0

原因可能是因为您仅在一种构建模式(例如发布)中链接到这些库。

第二个可能的原因:(如果我错了,请纠正我,因为我不是 100% 确定这一点)。LIB 文件可能是在不同的编译器中构建的。例如,LIB 是在 MinGW 中编译的,而您正在使用 MSVC++ 编译器链接到它。

第三个可能的原因:考虑您使用的是什么版本的 GLFW(如 32 位、64 位)。

于 2012-12-15T04:48:36.323 回答