VS2012:LNK4098: 默认库“MSVCRT”与其他库的使用冲突

2023-11-15

VS2012警告:LINK : warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library

原因:在使用多线程调试dll(MDd)模式的时候 <位置:配置属性 - c/c++ - 代码生成-运行时库> msvcrtd.lib 与 ibcmt.lib产生冲突

网上查的VS2008解决办法:

1.右击工程 - 属性 ”配置属性 - 链接器 - 输入 - 忽略特定库“,添加 ”libcmt.lib“

2.右击工程 - 属性 ”配置属性 - 链接器 - 命令行” 添加: /NODEFAULTLIB:“libcmt.lib”

但是在VS2012上没有效果

VS2012的解决方法:
1.右击工程 - 属性 ”配置属性 - 链接器 - 命令行” 添加:/nodefaultlib:“MSVCRT” 之后就没问题了

以下内容为转载这里

原理:

1)运行时库就是 C run-time library,是 C 而非 C++ 语言世界的概念:取这个名字就是因为你的 C 程序运行时需要这些库中的函数.

2)C 语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等);所以,C 语言内核开发出来之后,Dennis Ritchie 和 Brian Kernighan 就用 C 本身重写了 90% 以上的 UNIX 系统函数,并且把其中最常用的部分独立出来,形成头文件和对应的 LIBRARY,C run-time library 就是这样形成的。

3)随后,随着 C 语言的流行,各个 C 编译器的生产商/个体/团体都遵循老的传统,在不同平台上都有相对应的 Standard Library,但大部分实现都是与各个平台有关的。由于各个 C 编译器对 C 的支持和理解有很多分歧和微妙的差别,所以就有了 ANSI C;ANSI C (主观意图上)详细的规定了 C 语言各个要素的具体含义和编译器实现要求,引进了新的函数声明方式,同时订立了 Standard Library 的标准形式。所以C运行时库由编译器生产商提供。至于由其他厂商/个人/团体提供的头文件和库函数,应当称为第三方 C 运行库(Third party C run-time libraries)。

4)C run-time library里面含有初始化代码,还有错误处理代码(例如divide by zero处理)。你写的程序可以没有math库,程序照样运行,只是不能处理复杂的数学运算,不过如果没有了C run-time库,main()就不会被调用,exit()也不能被响应。因为C run-time library包含了C程序运行的最基本和最常用的函数。

5)到了 C++ 世界里,有另外一个概念:Standard C++ Library,它包括了上面所说的 C run-time library 和 STL。包含 C run-time library 的原因很明显,C++ 是 C 的超集,没有理由再重新来一个 C++ run-time library. VC针对C++ 加入的Standard C++ Library主要包括:LIBCP.LIB, LIBCPMT.LIB和 MSVCPRT.LIB

6)Windows环境下,VC提供的 C run-time library又分为动态运行时库和静态运行时库。
动态运行时库主要是DLL库文件msvcrt.dll(or MSVCRTD.DLL for debug build),对应的Import library文件是MSVCRT.LIB(MSVCRTD.LIB for debug build)
静态运行时库(release版)对应的主要文件是:
LIBC.LIB (Single thread static library, retail version)
LIBCMT.LIB (Multithread static library, retail version)

msvcrt.dll提供几千个C函数,即使是像printf这么低级的函数都在msvcrt.dll里。其实你的程序运行时,很大一部分时间时在这些运行库里运行。在你的程序(release版)被编译时,VC会根据你的编译选项(单线程、多线程或DLL)自动将相应的运行时库文件(libc.lib,libcmt.lib或Import library msvcrt.lib)链接进来。

编译时到底哪个C run-time library联入你的程序取决于编译选项:
/MD, /ML, /MT, /LD (Use Run-Time Library)
你可以VC中通过以下方法设置选择哪个C run-time library联入你的程序:
To find these options in the development environment, click Settings on the Project menu. Then click the C/C++ tab, and click Code Generation in the Category box. See the Use Run-Time Library drop-down box.
从程序可移植性考虑,如果两函数都可完成一种功能,选运行时库函数好,因为各个 C 编译器的生产商对标准C Run-time library提供了统一的支持.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VS2012:LNK4098: 默认库“MSVCRT”与其他库的使用冲突 的相关文章

  • 数据模板绑定垃圾邮件输出窗口出现错误:找不到管理 FrameworkElemen

    我有问题 System Windows Data 错误 2 找不到目标元素的管理 FrameworkElement 或 FrameworkContentElement BindingExpression 无路径 数据项 空 目标元素是 So
  • 在实体框架拦截器中向 DbScanExpression 添加内部联接

    我正在尝试使用实体框架 CommandTree 拦截器通过 DbContext 向每个查询添加过滤器 为了简单起见 我有两个表 一个称为 User 有两列 UserId 和 EmailAddress 另一个称为 TenantUser 有两列
  • 为什么在创建矩阵类时使用向量不好?

    对于我的矩阵类 我做了 template
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • EF Core 通过完全替换断开集合导航属性的更新

    使用 EF Core 5 0 我有一个 SPA 页面 可以加载Group实体及其集合Employee来自 API 的实体 var groupToUpdate await context Groups Include g gt g Emplo
  • ASP.NET Web API 客户端 ProgressMessageHandler Post 任务卡在 WinForm 应用程序中

    我在用着HttpClient and ProgressMessageHandler来自MS ASP NET Web API 客户端库 http nuget org packages Microsoft AspNet WebApi Clien
  • 读取 C# 中的默认应用程序设置

    我的自定义网格控件有许多应用程序设置 在用户范围内 其中大部分是颜色设置 我有一个表单 用户可以在其中自定义这些颜色 并且我想添加一个用于恢复默认颜色设置的按钮 如何读取默认设置 例如 我有一个名为的用户设置CellBackgroundCo
  • 在 Linux 上运行我自己的程序的权限被拒绝? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有Ubuntu 9 4 我已经构建了程序 一些基本的 OpenGL 该程序只是制作一个旋转的正方形 然后运行它并 sh blabla p
  • 与 Qt 项目的静态链接

    我有一个在 Visual Studio 2010 Professional 中构建的 Qt 项目 但是 当我运行它 在调试或发布模式下 时 它会要求一些 Qt dll 如果我提供 dll 并将它们放入 System32 中 它就可以工作 但
  • 指向特征矩阵的指针数组

    我在代码中使用 Eigen 的 MatrixXd 矩阵 在某个时刻我需要一个 3D 矩阵 由于 Eigen 没有三维矩阵类型 因为它仅针对线性代数进行了优化 因此我创建了一个 MatrixXd 类型的指针数组 Eigen MatrixXd
  • 找不到 assimp-vc140-mt.dll ASSIMP

    我已经从以下位置下载了 Assimp 项目http assimp sourceforge net main downloads html http assimp sourceforge net main downloads html Ass
  • 类的成员复制

    在学习 复制成员 概念时 书中给出了如下说法 此外 如果非静态成员是引用 const 或没有复制赋值的用户定义类型 则无法生成默认赋值 我不太明白这个声明到底想传达什么 或者说这个说法指的是哪一种场景 谢谢 该语句与编译器自动为您编写的类
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • 单例模式和 std::unique_ptr

    std unique ptr唯一地控制它指向的对象 因此不使用引用计数 单例确保利用引用计数只能创建一个对象 那么会std unique ptr与单例执行相同 单例确保只有一个实例属于一种类型 A unique ptr确保只有一个智能指针到
  • C# 构建一个 webservice 方法,它接受 POST 方法,如 HttpWebRequest 方法

    我需要一个接受 POST 方法的 Web 服务 访问我的服务器正在使用 POST 方法 它向我发送了一个 xml 我应该用一些 xml 进行响应 另一方面 当我访问他时 我已经使用 HttpWebRequest 类进行了管理 并且工作正常
  • 给出 5 个参数,但在终端中只得到 3 个参数

    我想将一个文件传递给一个c 程序 如果我在 IDE 中执行此操作 test string string lt test txt return argc 5 但在终端上我刚刚得到argc 3 看来 这是因为 什么是 lt 意思是 我正在使用
  • AES 输出是否小于输入?

    我想加密一个字符串并将其嵌入到 URL 中 因此我想确保加密的输出不大于输入 AES 是可行的方法吗 不可能创建任何始终会创建比输入更小的输出的算法 但可以将任何输出反转回输入 如果您允许 不大于输入 那么基本上您只是在谈论同构算法alwa
  • 如何在c的case语句中使用省略号?

    CASE expr no commas ELLIPSIS expr no commas 我在c的语法规则中看到了这样的规则 但是当我尝试重现它时 int test float i switch i case 1 3 printf hi 它失
  • cout 和字符串连接

    我刚刚复习了我的 C 我尝试这样做 include
  • xsi:type 属性搞乱了 C# XML 反序列化

    我使用 XSD exe 根据 XML 架构 xsd 文件 自动生成 C 对象 我正在反序列化 OpenCover 输出 但其中一个部分类未正确生成 这是导致异常的行

随机推荐

  • Dynamics 365 多选字段

    Dynamics 365 多选字段 数据库操作 C 后台操作 JS 扩展 JS string 转 int数组 数据库操作 update tablebase set field 1 对应选项值多个逗号隔开 1 C 后台操作
  • Testng学习笔记

    TestNG设计涵盖所有类型的测试 单元 功能 端到端 集成等 它需要JDK5或更高的JDK版本 TestNG是一个开源自动化测试框架 其灵感来自JUnit和NUnit的 TestNG环境设置 配置安装 TestNG是一个Java的框架 所
  • 在浏览器地址栏输入一个网址,从敲下回车键,到页面完全加载完毕,中间都发生了什么?

    1 如果地址栏中输入的是一个域名 浏览器会先使用自己的DNS缓存进行域名解析 转为IP地址 如果缓存中不存在 则会请求使用上层DNS 操作系统的DNS 操作系统会先查询本地HOST文件 如果HOST文件中不存在则会使用网络设置的DNS进行域
  • 关于 Q值

    先从大的方面来讲 从系统 从能量的角度来讲 Q值 描述任何可储能器件的性能 比如LC振荡回路 激光谐振腔 FP标准具 即Q 系统内能量 损耗功率 可见 Q值是储能器件受 振 荡驱动力和阻尼力的矛盾作用的结果 Q值越高 表示阻尼越小 当Q值
  • unity ugui序列帧动画

    使用unity自带的动画功能 1 使用unity自带的动画功能 2 在脚本中不停切换一个UI的图片以实现动画效果 1 使用unity自带的动画功能 2 在脚本中不停切换一个UI的图片以实现动画效果 using UnityEngine usi
  • 【配电网故障重构SOP】基于二阶锥松弛的加光伏风机储能进行的配电网故障处理和重构【考虑最优潮流】(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 电力系统最优潮流 综合考虑电网安全性和经济
  • c++哈希表-map&set (无序)

    简述 无序的map set 称为unordered map unordered set 采用迭代器遍历出来的元素是无序的 这是因此底层实现数据结构为哈希表 1 哈希表不同于红黑树 哈希表它的查找效率是o 1 一个常数的效率 虽然红黑树是o
  • 使用的chorm插件 留存自用

    使用的chorm插件 留存自用 保存一下常用的插件 省的以后忘记了 啊哈哈 掘金插件 每次打开浏览器都得看上几眼 JSON handle 在线json解析 不解释了 好用 PostMan 模拟api的网络请求 The Great Suspe
  • 浅谈ThreadLocal

    目录 一 ThreadLocal原理 二 TheadLocal特性 二 TheadLocal使用场景 一 ThreadLocal原理 1 每个Thread对象都含有一个ThreadLocalMap ThreadLocalMap是由Entry
  • node.js错误 --> node-pre-gyp install --fallback-to-build

    错误 node pre gyp install fallback to build 问题描述 在安装ghost博客的时候需要使用node js 但是在执行sudo npm install production的时候报了这个错误 接着百度 看
  • 饥饿和公平

    转自 饥饿和公平 下文笔者将讲述java多线程中的 饥饿与公平 的相关知识 如下所示 Java中饥饿与公平的概念 当一个线程因为CPU时间全部被其他线程获取而无法获取CPU运行时间时 我们将这种状态称之为 饥饿 此时此线程由于 饥饿 而无法
  • 最大公约数与最小公倍数 -- 3种计算方法详解

    目录 1 穷举法 最大公约数 思路 最小公倍数 思路 2 辗转相除法 最大公约数与最小公倍数 最大公约数思路 最小公倍数思路 公式 3 特殊方法 最大公约数 相减法 思路 最小公倍数 叠乘法 思路 总结 1 穷举法 最大公约数 思路 假设两
  • C/C++问题处理:error : no matching function for call to ‘max‘

    报错代码 MaxVal max MaxVal words i size words j size 上面的 words 是vector
  • vue的双向绑定原理---defineProperty->Proxy

    可以实现双向绑定的方法有很多 基于观察者模式 基于数据模型 Angular基于脏检查的双向绑定 本篇我们重点讲vue的基于数据劫持和发布订阅的双向绑定 vue实例化过程中进行了以下操作 initLifecycle vm initEvents
  • Android性能之内存泄漏

    和你一起终身学习 这里是程序员Android 经典好文推荐 通过阅读本文 您将收获以下知识点 一 什么是内存泄漏 二 Android中导致内存泄漏的主要几个点三 Java虚拟机内存管理四 Java内存几种分配策略 五 垃圾收集器是如何判断对
  • MATLAB环境下基于支持向量机、孤立森林和LSTM自编码器的三轴振动数据的机械异常检测

    本文讲解如何使用机器学习和深度学习来检测机械振动数据中的异常 属于异常检测领域 这玩意在工业中用的更多 因为工业中毕竟还是正常样本远多于故障样本 异常样本 运行环境为MATLAB R2021B 第三方面包多官网下载如下 正在为您运送作品详情
  • 因为一个bug来深入探讨下分页插件PageHelper

    事情来源是这样的 因为某些操作失误 在使用分页插件pageHelper时 因为这样一句不起眼的操作 竟然引发了一系列的灾难 下面来看下灾难的由来 Page localPage PageHelper startPage page limit
  • Linux WIFI 驱动实验(USB和SDIO方式)

    目录 WIFI 驱动添加与编译 向Linux 内核添加WIFI 驱动 配置Linux 内核 编译WIFI 驱动 驱动加载测试 wireless tools 工具移植与测试 wireless tools 移植 wireless tools 工
  • 数据结构循环链表,增删改查基本操作

    一 双向循环链表的描述 和单链表的循环类似 双向链表也可以有循环表 循环表的引进是为了弥补双向链表不能向前遍历的弊端 在双向循环链表中 头结点的直接前驱为尾结点 而尾结点的直接后继为头结点 二 双向循环链表的存储结构 三 双向循环链表基本操
  • VS2012:LNK4098: 默认库“MSVCRT”与其他库的使用冲突

    VS2012警告 LINK warning LNK4098 默认库 MSVCRT 与其他库的使用冲突 请使用 NODEFAULTLIB library 原因 在使用多线程调试dll MDd 模式的时候 lt 位置 配置属性 c c 代码生成