visual-c++ - 在VC++中使用OpenGL时警告LNK4098和LNK1123

标签 visual-c++ opengl compiler-errors

因此,我正在尝试让OpenGL Superbible 5th Edition中的第一个练习运行。它应该画一个三角形。我已经解决了所有愚蠢的错字。现在我只剩下两条错误消息,我认为其中之一是熟悉的。

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++感到不安。有人可以帮忙吗?

最佳答案

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

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

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

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

关于visual-c++ - 在VC++中使用OpenGL时警告LNK4098和LNK1123,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19983194/

相关文章:

c++ - 按照第一个 hello world 示例在 VS2010 中获取编译错误

c++ - 为什么包含windows.h会产生语法错误,从而阻止类的实例化? (C2146,C2065)

c++ - 在片段着色器 OpenGL 中写入多个 3d 纹理

c++ - 为什么所有 openGL 对象都存储在 GLuints 中?

Java如何在使用命令行编译时添加库或API?

java - 如何对扩展类的ArrayList进行排序?

visual-c++ - VC++ LPTSTR 错误

C++ OpenGL 在 GL_QUAD、glVertex2f 中加载图像

c++ - OLE 入门 - 什么是好的学习项目选择?

opengl - gluOrtho2D 和 glViewport