所以我正试图在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 ++感到不安。有人可以帮忙吗?
答案 0 :(得分:0)
这与OpenGL无关。此错误基本上告诉您,您正在一个已链接到该库的另一个版本的项目中使用Microsoft C标准库的多线程版本。
有趣的是,较新版本的MSVC没有针对线程与非线程的不同版本的C标准库。因此,您的MSVC版本是问题中缺少的相关信息。
在任何情况下,链接器警告实际上都会告诉您如何解决警告。您可以在项目设置中将/NODEFAULTLIB:libc
添加到链接器命令。项目设置中通常还有一个编辑框来完成此操作,但由于其位置因版本而异,因此将其添加到命令行会更简单。
对于COFF问题,这与增量链接项目中的调试符号的生成有关。 /INCREMENTAL:NO
应解决此问题。关于它的原因,您以前在这个系统上安装了不同版本的MSVC吗?