elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  (Solucionado) Error en Visual Studio 2013 al enlazar con los binarios de GLFW
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Solucionado) Error en Visual Studio 2013 al enlazar con los binarios de GLFW  (Leído 4,743 veces)
Seyro97

Desconectado Desconectado

Mensajes: 145


Ver Perfil WWW
(Solucionado) Error en Visual Studio 2013 al enlazar con los binarios de GLFW
« en: 13 Mayo 2015, 18:20 pm »

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:
Código
  1. 1>main.obj : error LNK2019: símbolo externo _glfwInit sin resolver al que se hace referencia en la función _main
  2. 1>main.obj : error LNK2019: símbolo externo _glfwTerminate sin resolver al que se hace referencia en la función _main
  3. 1>main.obj : error LNK2019: símbolo externo _glfwSetErrorCallback sin resolver al que se hace referencia en la función _main
  4. 1>main.obj : error LNK2019: símbolo externo _glfwCreateWindow sin resolver al que se hace referencia en la función _main
  5. 1>main.obj : error LNK2019: símbolo externo _glfwDestroyWindow sin resolver al que se hace referencia en la función _main
  6. 1>main.obj : error LNK2019: símbolo externo _glfwWindowShouldClose sin resolver al que se hace referencia en la función _main
  7. 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)
  8. 1>main.obj : error LNK2019: símbolo externo _glfwPollEvents sin resolver al que se hace referencia en la función _main
  9. 1>main.obj : error LNK2019: símbolo externo _glfwSetKeyCallback sin resolver al que se hace referencia en la función _main
  10. 1>main.obj : error LNK2019: símbolo externo _glfwMakeContextCurrent sin resolver al que se hace referencia en la función _main
  11. 1>main.obj : error LNK2019: símbolo externo _glfwSwapBuffers sin resolver al que se hace referencia en la función _main
  12. 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
  1. #include <GLFW/glfw3.h>
  2.  
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5.  
  6. static void error_callback(int error, const char* description) {
  7. fputs(description, stderr);
  8. }
  9.  
  10. static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) {
  11. if(key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
  12. glfwSetWindowShouldClose(window, GL_TRUE);
  13. }
  14.  
  15. int main(void) {
  16. GLFWwindow* window;
  17.  
  18. glfwSetErrorCallback(error_callback);
  19.  
  20. if(!glfwInit())
  21. exit(EXIT_FAILURE);
  22.  
  23. window = glfwCreateWindow(640, 480, "Simple example", NULL, NULL);
  24. if(!window) {
  25. glfwTerminate();
  26. exit(EXIT_FAILURE);
  27. }
  28.  
  29. glfwMakeContextCurrent(window);
  30. glfwSwapInterval(1);
  31.  
  32. glfwSetKeyCallback(window, key_callback);
  33.  
  34. while(!glfwWindowShouldClose(window)) {
  35. glClear(GL_COLOR_BUFFER_BIT);
  36.  
  37. glfwSwapBuffers(window);
  38. glfwPollEvents();
  39. }
  40.  
  41. glfwDestroyWindow(window);
  42.  
  43. glfwTerminate();
  44. exit(EXIT_SUCCESS);
  45. }
  46.  

Espero que me puedan ayudar :P ¡Muchas gracias por su atención!


« Última modificación: 13 Mayo 2015, 19:33 pm por Seyro97 » En línea

Carlos Peláez González. visita http://www.taringa.net/EnjoyC para muchos tutoriales!
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: (Ayuda) Error en Visual Studio 2013 al enlazar con los binarios de GLFW
« Respuesta #1 en: 13 Mayo 2015, 18:28 pm »

Los simbolos parecen ser de C... estas compilando como C++? intenta compilar como C. Sino revisemos los .obj aver como estan los simbolos y los de la libreria. Aunque en las cabeceras deberia resolver ese problema del nombre del simbolo asegurate que los simbolos estan en las librerias que dices.


« Última modificación: 13 Mayo 2015, 18:44 pm por x64Core » En línea

Seyro97

Desconectado Desconectado

Mensajes: 145


Ver Perfil WWW
Re: (Ayuda) Error en Visual Studio 2013 al enlazar con los binarios de GLFW
« Respuesta #2 en: 13 Mayo 2015, 18:58 pm »

El archivo main está guardado como extensión .c (o sea, que está en c) Ahora bien, en un tutorial sobre GLFW encontré la siguiente "frase": 'Callbacks are simply C functions (or C++ static methods)' La verdad, no se a que se refiere. Espero que ustedes lo comprendan :P



Creí que tenía instalado VS2013 a 64 bits, pero resulta que lo tenía a 32... y me descargué GLFW a 64 bits...

¡Muchas gracias por sus respuestas!
« Última modificación: 14 Mayo 2015, 22:56 pm por Eternal Idol » En línea

Carlos Peláez González. visita http://www.taringa.net/EnjoyC para muchos tutoriales!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines