嗨:在Visual Studio 2012 Professional,Update 4中,我可以通过创建一个新的Visual C ++项目(使用空白模板)并进入NuGet包管理器控制台并输入以下内容来轻松创建一个新的OpenGL项目:
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[]) {
...
}
然后在没有任何进一步配置的情况下,我可以点击大绿色构建按钮,所有内容都编译,链接和运行(在NuGet包中找到可再发行的.dll)并且工作正常。
在Visual Studio 2013中,相同的方法不起作用:VS2013抱怨它无法找到freeglut.lib:
LINK:致命错误LNK1104:无法打开文件'freeglut.lib'
如果我手动编辑库路径并将DLL复制到构建输出目录,我可以让项目编译,但这似乎非常不方便。
有趣的是,即使没有设置或更改任何内容,Visual Studio似乎足够聪明,知道寻找 freeglut.lib,但它似乎不知道在哪里找到它。
这是一个每个包的难度,还是VS2013改变了Visual Studio如何处理NuGet包的内容?
答案 0 :(得分:10)
我在Install-Package freeglut
之后遇到同样的问题然后我尝试安装另一个包:Install-Package nupengl.core
它有效
答案 1 :(得分:3)
为我解决了链接错误的原因是 properties-&gt; linker-&gt; input-&gt;其他依赖并添加了 opengl32.lib 。
您还需要确保 freeglut.dll / glew32.dll / glfw3.dll 与您的可执行文件在相同的文件夹中>。 这就是install-package nupengl.core为您所做的。
答案 2 :(得分:0)
对于静态链接:
#define GLEW_STATIC
#define FREEGLUT_STATIC
#include <GL/glew.h>
#include <GL/freeglut.h>
项目 - &gt;属性 - &gt;配置属性 - &gt;参考包 - &gt; freeglut-&gt;链接(选择静态)
对Referenced Packages-&gt; glew
执行相同操作现在,在Linker-&gt; General-&gt;其他库目录:
$(SolutionDir)\包\ freeglut.2.8.1.15 \建立\天然\ lib中\ V110 \的Win32 \调试\静态; $(SolutionDir)\包\ glew.1.9.0.1 \建立\天然\ lib中\ V110 \的Win32 \调试\静态
图书馆版本可能会发生变化,路径可能会有所变化,但这对我来说在2015年5月14日有用。
编辑:你仍然需要在链接器中包含“glew.lib” - >输入 - >附加依赖关系,因此,使用参考包设置烦恼似乎毫无意义(它适用于freeglut,但不适用于glew,如果你不管怎样,不得不加入其他依赖关系,也可以添加freeglut。
对于动态链接,在Referenced Packages部分中,为freeglut&amp;选择“动态链接”。 glew,并在Additional Library Directories设置中添加或替换每个包的库目录,并将DLL从可再发行目录复制到Projects输出目录,将调试DLL与Debug目录相匹配等。 另外,省略XXX_STATIC #defines:)
动态设置是猜测,但我知道静态设置有效。