【发布时间】:2014-03-01 10:17:52
【问题描述】:
嗨:在 Visual Studio 2012 Professional 更新 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 包的方式?
【问题讨论】:
-
试图通过查看终端中的编译器标志来调试它以发现任何差异,但 2012 和 2013 几乎相同——除了引用 vc110.pcb 与 vc120.pcb 用于调试符号.我似乎真的找不到 2013 年环境不应该工作的任何原因......
-
查看 2012 年和 2013 年的理论链接器 CLI 选择与实际输出,我发现它们完全相同,除了 2012 年链接器神奇地插入了 .lib文件。我找不到任何设置差异来解释这一点:rifers.org/paste/show/2674
标签: c++ visual-studio-2012 visual-studio-2013 nuget freeglut