2014-02-05 1 views
6

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

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

Чтобы захватить библиотеки для freeglut, GLEW и GLM

затем я могу создать простой пример с использованием этих библиотек: (full example)

#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:

LINK: фатальный LNK1104 об ошибке: Не удается открыть файл 'freeglut.lib'

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

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

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

+0

Попытка отладить это, посмотрев флаги компилятора в терминале, чтобы выявить любые различия, но 2012 и 2013 годы практически идентичны - помимо ссылок на vc110.pcb по сравнению с vc120.pcb для отладки символов. Я действительно не могу найти причин, по которым среда 2013 года не должна работать ... –

+0

Глядя на теоретический компоновщик, CLI выбирает в 2012 и 2013 годах по сравнению с фактическим результатом, я обнаружил, что они точно идентичны *, кроме * 2012 компоновщик волшебным образом вставляет .lib-файлы. Я не могу найти разницу в настройках для этого: http://rifers.org/paste/show/2674 –

ответ

10

У меня такая же проблема, после установки пакета-freeglut

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

Он работает

+1

Я столкнулся с той же проблемой, и установка nupengl.core решила проблему. Но вы поняли почему? –

0

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

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

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

Сделайте то же самое для Реферировано Пакеты-> Glew

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

$ (SolutionDir) \ пакеты \ freeglut.2.8.1.15 \ построить \ родной \ lib \ v110 \ Win32 \ Debug \ static; $ (SolutionDir) \ packages \ glew.1.9.0.1 \ build \ native \ lib \ v110 \ Win32 \ Debug \ static

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

EDIT: вам все равно необходимо включить «glew.lib» в Linker-> Input-> Additional Dependencies, так что беспокоиться с настройками ссылочного пакета кажется бессмысленным (он работает для freeglut, но не glew, и если у вас есть так или иначе, чтобы добавить к дополнительным зависимостям, также можно добавить freeglut тоже).

Для динамической компоновки, в пакетах раздел Реферировано, выберите «Dynamic Linking» для freeglut & GLEW, а также добавить или заменить библиотеку каталога каждого пакета в дополнительной настройке каталогов библиотек и скопировать DLL файлов из распространяемого каталога на ваш Проекты выводят каталоги, сопоставляя DLL отладки с каталогом Debug и т. Д. Также опустите XXX_STATIC#defines :)

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

3

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^