首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用/MTd设置而不是/MDd重新构建库时出现LINK2019错误

问题描述:在重新构建库时,使用/MTd设置而不是/MDd时,出现LINK2019错误。

回答:LINK2019错误是指在链接阶段发生了未解析的符号错误。该错误通常与库文件的链接方式和项目设置有关。

  1. 问题原因: 当使用/MTd编译选项进行库的构建时,表示使用多线程调试版本的C运行时库。而使用/MDd编译选项则表示使用多线程调试版本的动态链接C运行时库。当重新构建库时,如果在项目设置中选择了/MTd而不是/MDd,那么链接器在链接时会试图找到与库使用的运行时库相匹配的符号,但找不到对应的库文件,从而导致LINK2019错误。
  2. 解决方法:
    • 确保项目设置中与库构建选项一致:打开项目设置,选择合适的运行时库选项。如果库是使用/MTd构建的,确保项目设置中也选择了/MTd;如果库是使用/MDd构建的,确保项目设置中也选择了/MDd。
    • 确认库文件是否正确:检查库文件是否存在,且路径设置正确。确保库文件与项目设置中的路径一致,并且对应配置(Debug/Release)的库文件存在。
    • 清理和重新构建:尝试清理解决方案并重新构建项目,以确保所有文件都重新编译和链接。
  • 相关名词解释:
    • 多线程调试版本的C运行时库(/MTd):在使用多线程进行调试时,使用静态链接C运行时库。这种设置可以避免由于不同模块使用不同版本的运行时库而引起的冲突。
    • 动态链接C运行时库(/MDd):使用动态链接C运行时库,这意味着将C运行时函数链接到动态链接库(DLL)中,以减小可执行文件的大小并允许多个应用程序共享同一个运行时库。
  • 推荐的腾讯云产品: 腾讯云提供了丰富的云计算产品和服务,适用于各种场景和需求。以下是一些与云计算领域相关的推荐产品:
    • 腾讯云云服务器(CVM):提供稳定可靠的云服务器实例,支持多种操作系统和配置,满足各种计算需求。产品介绍链接
    • 腾讯云对象存储(COS):提供高可用、高耐久性的分布式对象存储服务,适用于数据备份、静态网站托管等场景。产品介绍链接
    • 腾讯云容器服务(TKE):提供稳定可靠的容器集群管理服务,支持弹性伸缩、自动化运维等功能,适用于容器化应用部署。产品介绍链接
    • 腾讯云数据库(TencentDB):提供多种数据库类型,如关系型数据库(MySQL、SQL Server)、NoSQL数据库等,支持高性能、高可用的数据库服务。产品介绍链接

以上是关于使用/MTd设置而不是/MDd重新构建库时出现LINK2019错误的解答。希望能对您有所帮助。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

当我们自己写了一个C++动态,给C#调用出现的问题与解决方案

不久前,由于C#语言限制(太麻烦,代码量太多,并不是无法实现),我用C++写了实现一样功能的动态,供C#调用 在本机调用C++动态,都正常,但是只要是无开发、C++、C环境的电脑下运行,就会提示无法找到...是Release 就把运行库改成MT 运行库改成MD就会报代码错误 运行库改成MDd还是无法加载 MT    选项:链接LIB版的C和C++运行库。...在链接就会在将C和C++运行时集成到程序中成为程序中的代码,程序体积会变大。 MTd  选项:LIB的调试版。...MD    选项:使用DLL版的C和C++运行库,这样在程序运行时会动态的加载对应的DLL,程序体积会减小,缺点是在系统没有对应DLL程序无法运行。...MDd  选项:表示使用DLL的调试版。

1.7K10

Qt5.11.2 & VS2017 & 64位版本 静态编译

如果想将生成的程序连同所需要的依赖一起完整地打包成一个.exe可执行程序,那就需要使用静态编译。...但我们可以自己下载Qt源码下来,自己重新编译,生成静态,这样我们开发的Qt程序也就能完成静态的编译了。...”(main.obj 中) 原因及解决方法: 因为我们编译的Qt5.11.2的VC运行库是MT和MTd,工程向导创建的缺省是MD和MDd。...---- 错误二: LINK : warning LNK4098: 默认“LIBCMT”与其他使用冲突;请使用 /NODEFAULTLIB:library 原因及解决方法: 在同一个项目中,...如果某一文件用了MTd版本,而其他文件用MT版本的,也就是说用了不同的,就会导致这个警告的出现

1K20

VS2013_QT5.4_静态编译问题_已经解决

但是在使用VS2013新建一个QT项目的时候,出现了以下错误提示,现在我列出我的解决方法,至于为什么这么解决,最后会给出。...在使用VS2013新建qt项目并进行编译的时候,提示错误 1>ClCompile: 1>  configsettingview.cpp 1>  moc_configsettingview.cpp 1>  ...”的不匹配项:  值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(configsettingview.obj 中) .........于是在当前项目右键->属性->配置属性->C/C++->代码生成  里将运行库改为  多线程调试(/MTd)  此时再编译,会出现错误如下: 1>  所有输出均为最新。...user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;mpr.lib;%(AdditionalDependencies) 再次编译,出现的提示错误如下

40330

Visual Studio中MD MDd MT MTd的含义以及_ITERATOR_DEBUG_LEVEL错误的解决方法

“多线程调试(/MTd)”或者“多线程调试DLL(/MDd)”,如果是的话,那就很简单了,既然你要生成RELEASE版本的解决方案,当然不能用调试版本的运行库了,所以相应的改为/MT或/MD即可。...那么/MTd /MDd /MT /MD又都是什么含义呢?其实MSDN上就有答案。开宗明义一句话:这些选项允许你选择运行时是静态还是动态,是debug版还是release版。...所谓动态,即DLL(Dynamic Link Library )。DLL是一个包含可由多个程序同时使用的代码和数据的不是可执行文件。.../MDd 定义 _DEBUG、_MT 和 _DLL,并使应用程序使用运行库的调试多线程并特定于 DLL 的版本。 它还使编译器将名 MSVCRTD.lib 放入 .obj 文件中。.../MTd 定义 _DEBUG 和 _MT。 此选项还使编译器将名 LIBCMTD.lib 放入 .obj 文件中,以便链接器使用 LIBCMTD.lib 解析外部符号。

1.7K20

《世嘉新人培训教材—游戏开发》2DGraphics1项目cmake构建

但是该样例是基于VS进行编写构建的,本人日常喜欢CLion进行C/C++开发,于是准备使用cmake重新组织该书籍的样例项目:2DGraphics1中的NimotsuKunBox和drawPixels...使用VS构建样例项目静态 在GameLib下,本书的译者已经帮我们编写了一个基本的指南: 编译顺序 在系统环境变量中添加 GAME_LIB_DIR 值为源码工程的根目录 注意要重启visual...“MDd_DynamicDebug”(main.cpp.obj 中) 这一类报错通常比较普遍,简单来讲就是:GameLib_d.lib这个是一个静态带Debug(MTd_StaticDebug),但是我们的项目链接步骤是以动态的方式链接这些文件...对于这个问题,有两种方式来解决,一种就是重新编译GameLib为一个dll(动态链接);另一种则是修改当前项目的链接方式为静态链接。...MSVC工程MT/MTd/MD/MDd_Copperxcx的博客-CSDN博客_cmake mt 问题3:error LNK2019: 无法解析的外部符号 _main,函数 “int __cdecl invoke_main

44640

CG007蓝宝书opengl宝典源码编译环境的搭建

编译 错误 LNK2005 _glewGetErrorString@4 已经在 glew32.lib(glew32.dll) 中定义 在nuGet程序包中卸载刚才安装的那两个包; 重新编译,OK 5...出现这个问题的原因是vs2015默认编译将许多标准采用内联方式处理,因而没有可以链接的标准文件,所以要专门添加标准文件来链接标准中的函数。...MSVCRT”与其他使用冲突;请使用 /NODEFAULTLIB:library 解决方法:是所有项目的这个"代码生成"属性设置保持一致。...项目——属性——配置属性——C/C++——代码生成:他有/MT,/MTd,/Md,/MDd四个选项,你必须让所有使用使用相同的配置,否则就会有相应的提示,甚至可能会出现无法解析的函数。...有时我们使用不是自己可以控制的,那么就只能把工程属性设置成河你使用相同的选项。

1.8K40

常见的错误集合解决方案(一)

产生这个问题的原因是当前工程是Debug版本,引用的文件Release版本,只需要把当前的Debug模式改成Release模式就可以了,或者打开解决方案--》属性--》链接器--》输入--》附加依赖项中引用...原因是:我release下,工程设置中运行库中设置成了"多线程调试 DLL (/MDd)"。这个是设置应该是在debug下的设置,release下应该设置“多线程 DLL (/MD)”。 ?...,有可能会出现链接错误(LNK2026 模块对于 SAFESEH 映像是不安全的),这个时候打开工程配置-链接-命令行,添加以下的代码。...“多线程(/MT)”:release版本多线程静态 需要使用 libboost_regex-vc90-mt-s- 1_44.lib “多线程调试(/MTd)”:debug版本多线程静态程 需要使用libboost_regex-vc90...44.dll “多线程调试 DLL(/MDd)”:debug版本 多线程动态 需要使用静态boost 连接 libboost_regex-vc90-mt-gd-1_44.lib 动态boost 连接

1.6K20

VS2015静态编译Qt5.5.1(包括Qtwebkit)

---- 安装需要的工具 以下使用和工具的版本都是编译机器是用的版本,其他版本没有尝试。...python 使用2.7.14版本 ruby 使用25-x64版本,ruby官网文档要求安装 perl 使用5.24,编译webkit和OpenSSL需要 win_flex windows编译webkit...Kits\8.1\bin\x86(可能你的机器不是这个路径)加到PATH下 在make install的时候出现了拷贝异常,出现在拷贝\qttranslations\translations的时候,修改下...,如果出现了请参考这里 使用VS2015建立Qtwebkit项目 遇到的问题: 运行项目之后出现【nextafter】错误,具体原因没有找,通过断点可以找到\qt-everywhere-opensource-src...x - DBL_EPSILON : x + DBL_EPSILON; } 然后重新编译webkit即可 ----

29220

Debug和Release之本质区别

或 /MTd 使用 Debug runtime library(调试版本的运行时刻函数)  /Od 关闭优化开关  /D "_DEBUG" 相当于 #define _DEBUG,打开编译调试代码开关...(主要针对assert函数)  /ZI 创建 Edit and continue(编辑继续)数据,这样在调试过程中如果修改了源代码不需重新编译  /GZ 可以帮助捕获内存错误  /Gm 打开最小化重链接开关...如果你的程序是多线程的,或者你发现某个变量的值与预期的不符而你确信已正确的设置了,则很可能遇到这样的问题。这种错误有时会表现为程序在最快优化出错最小优化正常。...#progma warning(default: 4702) //重新允许来暂时禁止某个警告,或使用 #progma warning(push, 3) //设置警告级别为 /W3 //......这样调试器就能使用 pdb 文件中的调试符号。但调试你会发现断点很难设置,变量也很难找到??这些都被优化过了。

3.7K90

你所不知道的C和C++运行库

使用VC构建项目,经常会遇到下面的链接错误: ? 初学者面对这些错误常常不知所错:libcmt.lib是什么东西?msvcrtd.dll又是干吗用的?...在链接就会在将C和C++运行时集成到程序中成为程序中的代码,程序体积会变大。 MTd选项: LIB的调试版。...MD选项:使用DLL版的C和C++运行库,这样在程序运行时会动态的加载对应的DLL,程序体积会减小,缺点是在系统没有对应DLL程序无法运行。 MDd选项:表示使用DLL的调试版。...在《由使用LeakDialog遇到的问题引出的一些分析》这篇文章中的实验一,使用VC6.0的默认配置没有拦截到内存泄露。...假设使用VC6.0并选择使用MD选项构建,那么当用户使用VC2005来使用这个DLL很可能出现找不到MSVCRT.DLL或MSVCP60.DLL的情况。

1.5K10

【swupdate文档 三】SWUpdate: 嵌入式系统的软件升级

一个名为“data”的特殊UBI卷在重新分区,用于保存和恢复数据,以保持好用户数据。 使用zlib支持压缩镜像。支持tarball (tgz文件)。...零拷贝流是通过在单个镜像像的描述中设置“installed-directly”标志来启用的。 配置和构建 需求 编译SWUpdate只需要依赖几个。...新的处理程序可以向需求列表中添加一些其他的 -当出现构建错误时,检查是否需要所有的处理程序,然后删除其中不需要的部分。...如果构建的时候选择了不同的机器,SWUpdate将在第一次尝试更改环境变量破坏环境变量。实际上,使用错误的默认环境后,你的板子将不能再次被引导启动。...这包含UBI卷的大小调整,不是MTD分区的大小调整。一个名为“data”的卷被用于在调整大小时保存和恢复数据。 执行预运行脚本 遍历所有镜像并调用相应的处理程序以便在目标上安装。

3.9K11

Windows下Qt静态编译全解

qt-libtiff -qt-libjpeg -no-webkit -qt-style-windowsxp -qt-style-windowsvista  4.运行nmake /I /K(附带/I /K 选项可以避免出现错误时编译自动终止...,用于跳过错误继续编译其它文件) 经过这样编译的Qt不依赖mingwm10.dll,libgcc_s_dw2-1.dll,但依赖Qt的Dll文件和微软的CRT运行时使用此Qt编译Windows...平台下的程序,发布需带上用到的Qt链接Dll文件和微软的CRT运行时Dll文件。...Dll文件(如微软的CRT运行时),使用此Qt编译Windows平台下的程序发布不需要附带任何额外的Dll文件。...不依赖任何Dll文件(如mingwm10.dll,libgcc_s_dw2-1.dll),使用此Qt编译的Windows平台下的程序发布不需要附带任何额外的Dll文件。

57220

S3C2440移植uboot之裁剪和修改默认参数

设置分区   每次启动内核,都会打印以下分区信息: Creating 4 MTD partitions on "NAND 256MiB 3,3V 8-bit": 0x00000000-0x00040000...然后重新编译新的uboot,就可以使用save命令保存环境变量了.   ...mtdparts命令(在旧版uboot里,是mtd命令) 设置mtdparts命令   其实,我们可以使用mtdparts命令,通过分区名字来代替这些地址,比如以前的uboot,直接输入: nand erase...(PS:当执行mtdparts default命令,uboot就会检测是否有CONFIG_CMD_MTDPARTS宏,然后再根据上面的MTDPARTS_DEFAULT宏保存的mtd   4)设置mtdparts...mtdparts命令就此设置好了   然后重新修改,之前设置的环境参数bootcmd(位于smdk2440.h):   将 #define CONFIG_BOOTCOMMAND "nand read

79920
领券