Visual Studio 11 GLFW símbolo externo de error

El código básico que yo uso es el ejemplo de http://www.glfw.org/documentation.html

Puedo obtener este resultado:

1>------ Build started: Project: ConsoleApplication1, Configuration: Debug Win32 ------
1>  Quelle.cpp
1>Quelle.obj : error LNK2019: unresolved external symbol _glfwInit referenced in function _main
1>Quelle.obj : error LNK2019: unresolved external symbol _glfwTerminate referenced in function _main
1>Quelle.obj : error LNK2019: unresolved external symbol _glfwCreateWindow referenced in function _main
1>Quelle.obj : error LNK2019: unresolved external symbol _glfwWindowShouldClose referenced in function _main
1>Quelle.obj : error LNK2019: unresolved external symbol _glfwPollEvents referenced in function _main
1>Quelle.obj : error LNK2019: unresolved external symbol _glfwMakeContextCurrent referenced in function _main
1>Quelle.obj : error LNK2019: unresolved external symbol _glfwSwapBuffers referenced in function _main
1>C:\Users\MICHAEL\documents\visual studio 2012\Projects\ConsoleApplication1\Debug\ConsoleApplication1.exe : fatal error LNK1120: 7 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

La glfw3.h se encuentra en el VC/directorio include.
También he añadido la glfw3.lib a la VC/carpeta lib y he añadido el glfw3.lib como una dependencia adicional a la entrada de linker, pero me sigue apareciendo este error.

Alguna Idea de por qué? Yo he utilizado los binarios precompilados (que soporte MSVC2012 y 64x) http://www.glfw.org/download.html

  • Podría ser una de 32-bit/64-bit conflicto. Que uno se descarga, y que se está compilando?
  • He descargado el Windows de 64 bits binarios porque tengo un Windows de 64 bits y mi Visual Studio es de 64 bits pero me compilar como de 32 bits. Voy a probarlo con la versión de 32 bits y digo si funcionó.
  • Nope. Exactamente los mismos errores con los archivos binarios de 32 bits
  • Nota: usted no debería ir añadiendo cosas a la VC install dir; lugar al lado de su proyecto en su lugar, y el conjunto de su proyecto de incluir y lib rutas de acceso correctamente. VC puede buscar en lugares que no son de esperar cuando buscando archivos lib (por ejemplo, 64/32 bits libs se encuentran en diferentes lugares). Es un detalle de implementación que se deben ignorar.
  • Ok gracias. Me lo sacó de la VC de directorios y establecer el lib ruta de acceso a la nueva dir. La solución que se borraron por el camino, no trabajó
InformationsquelleAutor Michael | 2013-11-26

3 Kommentare

  1. 22

    Aceptar, después de mucho ensayo y error lo resuelto.

    1. El uso de los binarios de 32 bits
    2. Clic derecho en el proyecto -> Propiedades -> VC++
    3. Incluir Directorios: C:\Users\MICHAEL\Desktop\glfw-3.0.3.bin.WIN32\include;$(IncludePath)
    4. Biblioteca De Directorios: C:\Users\MICHAEL\Desktop\glfw-3.0.3.bin.WIN32\lib-msvc110;$(LibraryPath)
    5. Enlazador -> Entrada -> Dependencias Adicionales agregar
    6. glfw3.lib y opengl32.lib

    Que resuelto para mí.

    • Gracias, fue la adición de opengl32.lib que me dieron 🙂
    • Wow, después de 8 horas de intentar que resolvió mi problema con el derecho de la primera instrucción. Nunca hubiera pensado que el uso de los binarios de 32 bits en un sistema operativo de 64 bits va a resolver mi problema.
    • Muchas gracias el hola mundo trabajaba para mí, pero el ejemplo boeing.cpp todavía tiene algunos errores
  2. 2

    Esta es mi solución, si alguien pretende utilizar la versión de 64 bits de GLFW:

    1. Obtener GFLW el código fuente de github.
    2. El uso de CMake para generar 64 bits de Visual Studio sln.
    3. Configurar el glfw el uso apropiado de la configuración:

    En el caso de la dinámica de la biblioteca:

    Proyecto -> Configuración -> C/C++ -> Generación de Código -> Biblioteca de tiempo de ejecución -> Multi-roscado de Depuración DLL (/MDd)

    En el caso de la biblioteca estática:

    Proyecto -> Configuración -> C/C++ -> Generación de Código -> Biblioteca de tiempo de ejecución -> Multi-roscado de Depuración (MTd)

    1. Construir el glfw proyecto.
    2. El siguiente Link binario en el proyecto:

      glfw3.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib;glfw3.lib
    3. También configurar su proyecto con la correspondiente /Tdm o /MTd compilador bandera y configurarlo para construir en x64.

    4. Construir.
  3. 0

    No tengo el necesario reputación para comentar sobre la aceptada respuesta (de Michael), pero me gustaría señalar que me dieron su método de trabajo. Lo que se necesita para corregir estaba cambiando la inclusión y la biblioteca de directorios ANTES de que el resto de la IncludePath/LibraryPath en lugar de DESPUÉS.

    • se podría escribir eso?
    • No recuerdo mucho acerca de este tema, pero me imagino que en lugar de lo que Michael ha escrito intente esto: $(IncludePath);C:\Users\<tunombredeusuario>\Escritorio\glfw-3.0.3.bin.WIN32\include —- y —- $(LibraryPath);C:\Users\<tunombredeusuario>\Escritorio\glfw-3.0.3.bin.WIN32\lib-msvc110

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea