Ошибки сборки OpenGL GLFW ИЛИ ошибки компоновки

Может кто-нибудь помочь мне заставить GLFW работать в Visual Studio 2012? Я не могу пройти начальную компиляцию. Я продолжаю получать неразрешенные внешние эффекты для функций GLFW. Проблема в том, что я не знаю, что я делаю неправильно. Я мог бы быть:

  • Неправильно создавать исходные файлы с помощью CMake.
  • Неправильно строит библиотеку.
  • Неправильная связь с библиотекой GLFW.

Я не уверен, что из этого, так что я просто перечислю, что я сделал:

1. Downloaded glfw-3.1.1 from glfw.org.
2. Used CMake GUI to make the source files.
a. Set source code to C:/GLFW/glfw-3.1.1
b. Set "Where to build the binaries" to C:/GLFW/glfw-3.1.1/GLFW_Built (I created that directory)
c. Clicked "Configure"d. Selected "Visual Studio 11 2012" as the generator (I also tried "Visual Studio 11 2012 Win64," but it gave me the same results. The ARM one wouldn't build at all)
e. Left "Use default native compilers" selected.
f. Clicked "Finish."g. Set "BUILD_SHARED_LIBS" to true (checked).
h. Clicked "Generate."3. Built the library.
a. Went to C:\GLFW\glfw-3.1.1\GLFW_Built and opened GLFW.sln in Visual Studio 2012.
b. Clicked BUILD->Build ALL_BUILD (worked fine, no errors)
4. Created a new blank project in Visual Studio 2012.
5. Went into the properties pages and set:
a. Configuration Properties/VC++ Directories/Include Directories: added "C:\GLFW\glfw-3.1.1\include"b. Configuration Properties/VC++ Directories/Library Directories: added "C:\GLFW\glfw-3.1.1\GLFW_Built\CMakeFiles\Export\lib" (it was the only lib folder I saw) and "C:\GLFW\glfw-3.1.1\GLFW_Built\src\Debug" (contains glfw3.dll and glfw3dll.lib)
c. Configuration Properties/C/C++/Additional Include Directories: added "C:\GLFW\glfw-3.1.1\include"d. Configuration Properties/Linker/General: added "C:\GLFW\glfw-3.1.1\GLFW_Built\src\Debug
e. Configuration Properties/Linker/Input: added "glfw3dll.lib" and "opengl32.lib"

Для моего кода у меня есть очень простая тестовая программа в main.cpp:

#include <GLFW/glfw3.h>
#include <thread>

int main()
{
glfwInit();
std::this_thread::sleep_for(std::chrono::seconds(1));
glfwTerminate();
}

Но я всегда получаю это в выводе:

1>main.obj : error LNK2019: unresolved external symbol _glfwInit referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol _glfwTerminate referenced in function _main
1>C:\Users\Adam\Desktop\Revenant\Revenant\Debug\Revenant.exe : fatal error LNK1120: 2 unresolved externals

1

Решение

Извлечь GLFW в C:\glfw-src (такой, что CMakeLists.txt в архиве есть на C:\glfw-src\CMakeLists.txt)

  • cd C:\glfw-src
  • mkdir build
  • cd build
  • cmake-gui ../
  • Нажмите Configure, выберите набор инструментов
  • Задавать CMAKE_INSTALL_PREFIX в C:/glfw
  • Создайте c:\glfw каталог
  • Нажмите Настроить снова
  • Нажмите Generate
  • открыто build\GLFW.sln в Visual Studio
  • Постройте версию Release проекта ALL_BUILD
  • Сборка релизной версии проекта INSTALL

C:\glfw теперь должен содержать include а также lib каталоги.

Предполагая новое решение «Пустой проект»:

  • Компилятор: Добавить c:\glfw\include в /I (Свойства конфигурации -> C / C ++ -> Общие -> Дополнительные каталоги включения)
  • Линкер: Добавить c:\glfw\lib в /LIBPATH (Свойства конфигурации -> Компоновщик -> Общие -> Дополнительные каталоги библиотеки) и добавьте glfw3.lib & opengl32.lib в /DYNAMICBASE (Свойства конфигурации -> Компоновщик -> Ввод -> Дополнительные зависимости)
1

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