【问题标题】:LNK4098 - 'MSVCRT' conflict using GLFWLNK4098 - 使用 GLFW 的“MSVCRT”冲突
【发布时间】:2016-06-15 09:00:48
【问题描述】:

我正在使用 OpenGL 开发一个项目。但是,当我构建我的项目时,我有链接器警告“正在解决 LNK4098:defaultlib 'MSVCRT' 与...冲突”。

我已经阅读了很多有关此警告的内容,并使用 Dependency Walker 发现我的 GLEW 正在使用 MSVCRT.dll(我认为它应该是这样的,因为那是“默认库”)。但是,当我检查 GLFW3.DLL 时,它说它使用 MSVCR120.DLL,这是我怀疑会导致我的应用程序发生冲突的错误 dll。

所以我尝试使用网站上的源代码从头开始构建 GLFW。我在项目中编辑了以下设置:

  • 目标扩展 -> 首先构建 .lib,然后构建 .dll
  • 平台工具集 -> v120
  • 配置类型 -> 我首先构建 .lib,然后构建 .dll

然后在 C/C++ -> Code Generation -> Runtime Library 下选择 Multi-threaded DLL (/MD)

在编译之前,我将所有内容都放在“发布”上。

当我重建所有内容并再次检查时,它仍然说它正在使用 MSVCR120.dll 并且它仍然会导致众所周知的 LNK4098 冲突。 我在这里做错了什么?我该如何解决冲突?提前致谢!

【问题讨论】:

    标签: c++ opengl dll glfw microsoft-runtime-library


    【解决方案1】:

    您需要为库和您的应用程序使用相同的“运行时库”设置。

    为避免出现问题,您应该准备两个版本的库:一个用于调试,一个用于发布。

    【讨论】:

    • 现在试试,如果成功了我会告诉你的
    • 非常感谢 :) 现在它正在毫无警告地工作!我使用 /MD 设置将所有包构建为“发布”,并将项目本身也发布,现在警告消失了。但是,一个 dll 仍然显示 MSVCR120,而另一个显示 MSVCRT。对此有何解释?链接:bit.ly/1QmsXA0
    猜你喜欢
    • 2022-01-06
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    相关资源
    最近更新 更多