Проблема связывания GLFW Visual Studio 2012

Это сводит меня с ума, я хочу статически ссылаться на GLFW.lib, следуя разделу 4.2.1. предоставленного файла readme.html, я добавил glfw.lib и opengl32.lib в раздел дополнительных зависимостей компоновщика на VS.

Я также добавил каталог, в том числе glfw.lib, в раздел дополнительных каталогов библиотеки под linker> general.

И, конечно, я включил файл 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 );
}

Что я делаю неправильно?

2

Решение

Убедитесь, что у вас есть glfw.dll в папке с вашим файлом .exe. Если это не поможет, добавьте еще одну библиотеку glu32.lib.

Я использую, чтобы добавить библиотеки в код, добавив это перед основной функцией. При этом вы увидите, какие библиотеки у вас есть linek, не копаясь в опциях и меню.

#pragma comment(lib, "GLFW.lib")
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")
3

Другие решения

Возможно, причина в том, что вы ссылаетесь на эти библиотеки только в одном режиме сборки, скажем, на выпуск.

Вторая возможная причина: (Поправьте меня, если я ошибаюсь, так как я не уверен на 100% в этом). Файлы LIB могли быть построены в другом компиляторе. Например, LIB был скомпилирован в MinGW, и вы ссылаетесь на него с помощью компилятора MSVC ++.

Третья возможная причина: подумайте, какую версию GLFW вы используете (как в 32-битной, 64-битной).

0

По вопросам рекламы [email protected]