Связывание с библиотеками NuGet в Visual Studio 2013

Привет: В Visual Studio 2012 Professional, обновление 4, я могу довольно легко создать новый проект OpenGL, создав новый проект Visual C ++ (используя пустой шаблон) и перейдя в консоль диспетчера пакетов NuGet и введя:

Install-Package freeglut
Install-Package glew
Install-Package glm

Чтобы получить библиотеки для freeglut, glew и glm (математическая библиотека только для заголовков).

Затем я могу создать простой пример, используя эти библиотеки 🙁полный пример)

#include <GL/freeglut.h>
#include <GL/glew.h>
#include <glm/glm.hpp>

int main(int argc, char *argv[]) {
...
}

И затем без какой-либо дополнительной настройки я могу нажать большую зеленую кнопку сборки, и все компилируется, связывается и запускается (находит распространяемые .dll в пакетах NuGet) и работает нормально.

В Visual Studio 2013 такой же подход не работает: VS2013 жалуется, что не может найти freeglut.lib:

ССЫЛКА: фатальная ошибка LNK1104: не удается открыть файл ‘freeglut.lib’

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

Интересно, что даже без установки или изменения чего-либо Visual Studio кажется достаточно умным, чтобы знать, Ищу freeglut.lib, но, похоже, он не знает, где его найти.

Это сложность для каждого пакета или VS2013 что-то изменило в том, как Visual Studio обрабатывает пакеты NuGet?

6

Решение

У меня такая же проблема, после Install-Package freeglut

Затем я пытаюсь установить другой пакет: Install-Package nupengl.core

Оно работает

10

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

Что решил линкеррор для меня собирался свойства-> компоновщик-> ввод-> дополнительные зависимости и добавил opengl32.lib.

Вы также должны убедиться, что freeglut.dll / glew32.dll / glfw3.dll находятся в та же папка как ваш исполняемый файл. Это то, что install-package nupengl.core делает для вас.

3

Для статического связывания:

#define GLEW_STATIC
#define FREEGLUT_STATIC
#include <GL/glew.h>
#include <GL/freeglut.h>

Проект-> Свойства-> Свойства конфигурации-> Ссылочные пакеты-> freeglut-> Связывание (выберите статический)

Сделайте то же самое для ссылочных пакетов-> glew

Теперь в Linker-> General-> Дополнительные каталоги библиотек:

$ (SolutionDir) \ пакеты \ freeglut.2.8.1.15 \ построить \ родной \ Lib \ v110 \ Win32 \ Debug \ статические; $ (SolutionDir) \ пакеты \ glew.1.9.0.1 \ построить \ родной \ Lib \ V110 \ Win32 \ Debug \ статические

Версии библиотеки могут измениться, и путь может немного измениться, но это то, что работает для меня с 14 мая 2015 года.

РЕДАКТИРОВАТЬ: вам все еще нужно включить «glew.lib» в Linker-> Input-> Additional Dependencies, поэтому беспокоиться о настройках Referenced Package кажется бессмысленным (это работает для freeglut, но не glew, и если вам нужно glew для В любом случае, дополнительные зависимости также могут просто добавить freeglut).

Для динамического связывания в разделе «Связанные пакеты» выберите «Динамическое связывание» для свободного выбора. & добавьте или замените каталог библиотеки каждого пакета в параметре «Дополнительные каталоги библиотек» и скопируйте библиотеки DLL из каталога, подлежащего распространению, в выходные каталоги Projects, сопоставив DLL отладки с каталогом Debug и т. д.
Кроме того, опустите XXX_STATIC #defines 🙂

Динамические настройки являются предположением, но я знаю, что статические настройки работают.

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