Hola. Muy buenas a tod@s. Hoy se me presenta un problema bastante frustrante porque no tiene que ver con C++ y no he encontrado la solución en Internet.
El problema es que al compilar un sencillo código sobre GLFW, me da error al enlazar con dicha librería.
Código de error:
Como ven, todos estos errores vienen de que hay problemas al enlazar con las dependecias de GLFW. Bien, los pasos que seguí son los siguientes:
1) Crear proyecto 'aplicación de consola de consola' en VS2013
2) Acceder a las propiedades del proyecto
3) En el apartado general de C++, añadí las carpetas de include donde están los headers de GLFW (C:\Users\Carlos\Desktop\Programacion\Cpp\Prueba\include)
4) En en apartado general de 'vinculador' he añadido las carpetas donde están los binarios .lib de GLFW (C:\Users\Carlos\Desktop\Programacion\Cpp\Prueba\binaries\lib-vc2013)
5) Último paso: en el apartado entrada del vinculador añadí esto:
opengl32.lib
glfw3.lib
glfw3dll.lib
Además de estas, hay agregadas por defecto
Bueno. En último lugar les enseñaré el código por si sirve de algo:
Espero que me puedan ayudar ¡Muchas gracias por su atención!
El problema es que al compilar un sencillo código sobre GLFW, me da error al enlazar con dicha librería.
Código de error:
Código (cpp) [Seleccionar]
1>main.obj : error LNK2019: símbolo externo _glfwInit sin resolver al que se hace referencia en la función _main
1>main.obj : error LNK2019: símbolo externo _glfwTerminate sin resolver al que se hace referencia en la función _main
1>main.obj : error LNK2019: símbolo externo _glfwSetErrorCallback sin resolver al que se hace referencia en la función _main
1>main.obj : error LNK2019: símbolo externo _glfwCreateWindow sin resolver al que se hace referencia en la función _main
1>main.obj : error LNK2019: símbolo externo _glfwDestroyWindow sin resolver al que se hace referencia en la función _main
1>main.obj : error LNK2019: símbolo externo _glfwWindowShouldClose sin resolver al que se hace referencia en la función _main
1>main.obj : error LNK2019: símbolo externo _glfwSetWindowShouldClose sin resolver al que se hace referencia en la función "void __cdecl key_callback(struct GLFWwindow *,int,int,int,int)" (?key_callback@@YAXPAUGLFWwindow@@HHHH@Z)
1>main.obj : error LNK2019: símbolo externo _glfwPollEvents sin resolver al que se hace referencia en la función _main
1>main.obj : error LNK2019: símbolo externo _glfwSetKeyCallback sin resolver al que se hace referencia en la función _main
1>main.obj : error LNK2019: símbolo externo _glfwMakeContextCurrent sin resolver al que se hace referencia en la función _main
1>main.obj : error LNK2019: símbolo externo _glfwSwapBuffers sin resolver al que se hace referencia en la función _main
1>main.obj : error LNK2019: símbolo externo _glfwSwapInterval sin resolver al que se hace referencia en la función _main
Como ven, todos estos errores vienen de que hay problemas al enlazar con las dependecias de GLFW. Bien, los pasos que seguí son los siguientes:
1) Crear proyecto 'aplicación de consola de consola' en VS2013
2) Acceder a las propiedades del proyecto
3) En el apartado general de C++, añadí las carpetas de include donde están los headers de GLFW (C:\Users\Carlos\Desktop\Programacion\Cpp\Prueba\include)
4) En en apartado general de 'vinculador' he añadido las carpetas donde están los binarios .lib de GLFW (C:\Users\Carlos\Desktop\Programacion\Cpp\Prueba\binaries\lib-vc2013)
5) Último paso: en el apartado entrada del vinculador añadí esto:
opengl32.lib
glfw3.lib
glfw3dll.lib
Además de estas, hay agregadas por defecto
Bueno. En último lugar les enseñaré el código por si sirve de algo:
Código (cpp) [Seleccionar]
#include <GLFW/glfw3.h>
#include <stdlib.h>
#include <stdio.h>
static void error_callback(int error, const char* description) {
fputs(description, stderr);
}
static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) {
if(key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
glfwSetWindowShouldClose(window, GL_TRUE);
}
int main(void) {
GLFWwindow* window;
glfwSetErrorCallback(error_callback);
if(!glfwInit())
exit(EXIT_FAILURE);
window = glfwCreateWindow(640, 480, "Simple example", NULL, NULL);
if(!window) {
glfwTerminate();
exit(EXIT_FAILURE);
}
glfwMakeContextCurrent(window);
glfwSwapInterval(1);
glfwSetKeyCallback(window, key_callback);
while(!glfwWindowShouldClose(window)) {
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwDestroyWindow(window);
glfwTerminate();
exit(EXIT_SUCCESS);
}
Espero que me puedan ayudar ¡Muchas gracias por su atención!