0

因此,我正在尝试运行 OpenGL Superbible 第 5 版中的第一个练习。它应该画一个三角形。我已经设法修正了我所有的愚蠢的错别字。现在我只有两条错误消息,我认为其中一条很熟悉;

1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use              /NODEFAULTLIB:library
1>LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt

我想我第一次使用 C++ 时偶然发现了 LNK1123,我通过在项目设置中禁用“增量链接”来修复它。但是,当我现在尝试此操作时,尽管程序确实运行并且确实打开了一个窗口,但没有绘制三角形,并且我得到了与 OpenGL 工具相关的错误列表。LNK4098 也仍然存在。

这是我第一个使用库导入的项目。虽然这是一个试图让它工作的雷区,但我最终将图形库 GLEW 和 freeGLUT 添加到我的项目中,方法是将它们添加到项目的包含路径列表中,然后将它们作为现有项目添加到项目中。但我怀疑这种方法扰乱了强大的 VC++。有人可以帮忙吗?

4

1 回答 1

0

这与OpenGL无关。这个错误基本上是在告诉你,你在一个已经链接到另一个版本的库的项目中使用了微软 C 标准库的多线程版本。

有趣的是,较新版本的 MSVC 没有针对线程和非线程的不同版本的 C 标准库。因此,您的 MSVC 版本是问题中缺少的相关信息。

无论如何,链接器警告实际上会告诉您如何解决警告。您可以/NODEFAULTLIB:libc在项目设置中添加链接器命令。项目设置中通常也有一个编辑框来完成此操作,但由于其位置因版本而异,因此将其添加到命令行更简单。


至于 COFF 问题,这与增量链接项目中调试符号的生成有关。/INCREMENTAL:NO应该解决这个问题。关于它的原因,您过去是否在此系统上安装了不同版本的 MSVC?

于 2013-11-14T22:44:32.320 回答