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

如何针对发布版本的lib(MSVCRT.lib)构建调试.exe(MSVCRTD.lib)?

要针对发布版本的lib(MSVCRT.lib)构建调试.exe(MSVCRTD.lib),您需要遵循以下步骤:

  1. 打开Visual Studio命令提示符。cl /Zi /MDd /link /debug /pdb:myprogram.pdb myprogram.c在这个命令中,/Zi表示生成调试信息,/MDd表示使用多线程和动态链接的调试版本运行时库,/link表示链接器选项的开始,/debug表示生成调试信息,/pdb:myprogram.pdb表示生成的程序数据库文件名,myprogram.c表示源代码文件名。 4. 使用以下命令链接生成的对象文件:link /debug /pdb:myprogram.pdb /out:myprogram.exe myprogram.obj msvcrtd.lib在这个命令中,/debug表示生成调试信息,/pdb:myprogram.pdb表示程序数据库文件名,/out:myprogram.exe表示输出的可执行文件名,myprogram.obj表示源代码编译生成的对象文件名,msvcrtd.lib表示调试版本的C运行时库。 5. 现在,您可以使用Visual Studio或其他调试器调试生成的可执行文件。
  2. 转到您的项目目录。
  3. 使用以下命令编译源代码:

注意:在这个过程中,我们使用了调试版本的C运行时库(MSVCRTD.lib),这将允许您进行调试。如果您想要发布版本的可执行文件,请使用发布版本的C运行时库(MSVCRT.lib)。

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

相关·内容

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

/配置属性/ C,C++/代码生成/运行库”这里看看你选择是不是“多线程调试(/MTd)”或者“多线程调试DLL(/MDd)”,如果是的话,那就很简单了,既然你要生成RELEASE版本解决方案,当然不能用调试版本运行库了...定义 _MT 和 _DLL,并使编译器将库名 MSVCRT.lib 放入 .obj 文件中。 用此选项编译应用程序静态链接到 MSVCRT.lib。 此库提供允许链接器解析外部引用代码层。...实际工作代码包含在 MSVCR100.DLL, 中,该库必须在运行时对于与 MSVCRT.lib 链接应用程序可用。.../MDd 定义 _DEBUG、_MT 和 _DLL,并使应用程序使用运行库调试多线程并特定于 DLL 版本。 它还使编译器将库名 MSVCRTD.lib 放入 .obj 文件中。.../MT 使应用程序使用运行库多线程静态版本。 定义 _MT 并使编译器将LIBCMT.lib 放入 .obj 文件中,以便链接器使用 LIBCMT.lib 解析外部符号。

1.8K20
  • 让vc编译出程序减小体积

    .OBJ 中 /TC 将所有文件编译为 .c /Yl[sym] 为调试库插入 .PCH 引用 /TP 将所有文件编译为 .cpp /Yu[file] 使用 .PCH 文件 /V 设置版本字符串...] 自动 .PCH /w 禁用所有警告 /Y- 禁用所有 PCH 选项 /wd 禁用警告 n /Zm 最大内存分配(默认为 %) /we 将警告 n 视为错误 -链接- /MD 与 MSVCRT.LIB...链接 /MDd 与 MSVCRTD.LIB 调试库链接 /ML 与 LIBC.LIB 链接 /MLd 与 LIBCD.LIB 调试库链接 /MT 与 LIBCMT.LIB 链接 /MTd 与 LIBCMTD.LIB...编译器选项 - 输出文件 - /out: 输出文件名(默认值:包含主类文件或第一个文件基名称) /target:exe 生成控制台可执行文件(默认) (缩写: /t:exe) /target.../lib: 指定要在其中搜索引用附加目录

    2K10

    gbase导出sql_gbase修改字段名称

    但是出现了一堆 error LNK2005问题,大概是说: 原来会发生这些奇怪错误状况,是因为程序同时链接了 LIBCMTD.libMSVCRTD.lib而造成函数定义版本冲突。...也就是说,程序链接器已经在其中一个 CRT版本中找到所需函数定义,但此时却又跳出另外一位 CRT,也给了一份相同函数实现版本,所以链接器无法判断应该忽略谁并且选择谁。...关键词:程序库、CRT、LIBCMTD.libMSVCRTD.lib、链接库冲突问题、MSVC链接处理 阅读前需要对静态库(.lib)、动态库(.dll)、导入库(这个还是.lib)之间区别联系有了解...属性-C/C++ – 代码生成-多线程调试(MDd)。因为我是debug下。...发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/230731.html原文链接:https://javaforall.cn

    84620

    32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数

    动态静态加载 什么意思:   动态就是dll,静态就是dll所对应lib,这个lib保存了dll路径信息,还有导出函数信息,当我们连接到EXE时候,会从lib中拷贝dll路径,以及导出函数...,然后放到exe当中, 当我们调用时候,会根据dll路径,找到对应dll,根据导出函数,调用dll导出函数(比如昨天HELLO信息框)  静态加载:   静态加载则是直接把lib连接到exe当中...,(这个lib中放都是代码),相当于把代码拷贝到exe中,这样调用时候,直接执行代码,而不从dll中去执行这个API了....   动态使用我们需要加上 msvcrt.inc然后还需要msvcrt.lib .inc 我们知道存是函数声明, 而.lib则是存放dll路径,以及导出函数 例子: .386 .model...,使用OD调试查看 ?

    1.4K80

    VS编译链接时错误(Error Link2005)解决方法

    但是在编译链接项目时,VS爆出如下错误: 1>LIBCMTD.lib(crt0init.obj) : error LNK2005: __xi_a 已经在 MSVCRT.lib(cinitexe.obj)...中定义 1>LIBCMTD.lib(crt0init.obj) : error LNK2005: __xi_z 已经在 MSVCRT.lib(cinitexe.obj) 中定义 1>LIBCMTD.lib...但是,如上提示中符号“__xi_a”等并没有出现在源代码中。因此判断可能是库版本不对。查看一下工程属性配置,右键选择工程->属性->C/C++->代码生成->运行库: ?      ...可以看到主工程使用了“多线程DLL(/MD)”版本运行库,而同时开发静态库时使用了“多线程调试(/MTd)”配置: ?       显然在编译链接时候会产生错误,导致无法正常生成可执行程序。...将静态库工程和主工程运行时库版本设置为一致就可以解决问题了。另外,网上还提供了一种新方法来查看工程链接具体静态库路径:在“属性->链接器->常规->显示进度”中进行选择。 ?

    2.3K90

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

    对于VC++编译器来说,它提供CRT库支持C标准定义标准C函数,同时也有一些专门针对windows系统特别设计函数。...为了方便有不同需求客户使用,VC++分别实现了动态链接库DLL版本和静态库LIB版本。同时为了支持程序调试且不影响程序性能,又分别提供了对应调试版本。...而DLL版本名称根据编译器不同而不同,我们可以从名称上加以分辨: VC6.0使用CRT库DLL版本在MSVCRT.DLL中实现, 对应调试版本MSVCRTD.LIB。...LIB版均实现在libcpmt.lib中,对应调试版本为libcpmtd.lib。...它其实是LIBC.lib调试版,而LIBC.lib是只有在VC6.0才会使用静态库,该库是CRT单线程版,用于支持单线程版本CRT。

    1.5K10

    小白也可以玩转CMake之常用必备

    例如,如果要使用C++11构建main.cpp,而只构建库,则可能希望将其构建为C++14。...以下是您可以添加链接器标志变量: CMAKE_EXE_LINKER_FLAGS:在创建可执行文件时由链接器使用标志 CMAKE_EXE_LINKER_FLAGS_RELEASE:在创建发布版本可执行文件时由链接器使用标志...CMAKE_EXE_LINKER_FLAGS_DEBUG:在创建调试版本可执行文件时由链接器使用标志 CMAKE_STATIC_LINKER_FLAGS:在创建静态库(.a、.lib)时由链接器使用标志..."${CMAKE_EXE_LINKER_FLAGS} -Wl") 了解如何使用这些标志可以帮助您更好地控制可执行文件链接行为。...: CMAKE_EXE_LINKER_FLAGS_RELEASE:用于创建发布版本可执行文件标志 CMAKE_EXE_LINKER_FLAGS_DEBUG:用于创建调试版本可执行文件标志 CMAKE_CXX_FLAGS_RELEASE

    53140

    VS2015 error LNK2019 无法解析外部符号 _WinMain@16,该符号在函数 “int __cdecl invoke_main(void)”

    前言 上一篇文章中,为了编译OpenCV示例代码,然后搭建环境, 最后想直接运行示例demo,我在创建新工程时候,直接创建了一个win32窗口项目,然后环境配置完成后,将opencv 示例代码...kalman.cpp直接导入到新建vs工程中进行编译,直接报错: 错误 LNK2019 无法解析外部符号 _WinMain@16,该符号在函数 "int __cdecl invoke_main(void...invoke_main@@YAHXZ) 中被引用 opencvDemo E:\MyWork\VSProject\opencvDemo\opencvDemo\MSVCRTD.lib(exe_winmain.obj...所以我这里出错原因是我导入kalman.cpp是一个dos控制台程序,但是我新建项目时选择是“win32项目”,这时候修改一下配置就可以了。...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/185413.html原文链接:https://javaforall.cn

    1.2K10

    记将一个大型客户端应用项目迁移到 dotnet 6 经验和决策

    文件之间,如何共享运行时,如果不共享文件夹,各自独立发布,那将让输出文件夹体积非常大 多个 Exe 文件,如果在相同文件夹进行发布,将会相互覆盖相同名字程序集。...这部分定制不能污染其他应用 发布到用户端运行时版本只能选用稳定版本,而开发者会使用较新 SDK 版本,开发构建输出程序集将引用较新 SDK 版本,如应用运行加载只是发布到用户端运行时版本,将会因为版本低于构建版本而出错...意味着私有的版本难以调试,而且也无法在开发时处理私有的版本行为变更 如果选用私有的版本作为软件运行加载程序集,那么将因为私有的版本版本号比开发者 SDK 版本低,从而让开发者构建出来程序集找不到对应版本从而运行失败...这些 Exe 如果都进行独立发布,那安装输出文件夹体积很大,而且重复文件也很多,构建也需要慢慢等 解决方法是通过 AppHost 定制方式,让所有的 Exe 都加载应用输出文件夹 runtime...只能带给应用自己 如上文,做每个 Exe 独立发布是不合适,只能放入到输出文件夹 runtime 文件夹 调用插件进程 有插件进程是放在 AppData 文件夹,不在应用安装输出文件夹里面,如何调用插件进程让插件进程可以使用到运行时

    1.6K10

    最新!想学CPython,Python之父Guido亲上阵

    就在刚刚(2020年2月10日),Python之父Guido van Rossum在其个人Blog中发布了他对CPython学习帮助教程。下面让我们一睹为快吧! ? 1 你需要了解!.../configure --with-pydebug make(或者 make -j 以利用所有CPU) ▌编辑-测试-调试,C版本 1、编辑一个 .c 或 .h 文件等 2、make 3、..../python.exe -m test (需要很长时间) ▌编辑-测试-调试,Python版本(和C类似,没有make步骤) 1、编辑一个 .py 文件 2、..../python.exe 给出交互提示 3、./python.exe Lib/test/regrtest.py [flags] testname … 4、运行所有测试:..../python.exe Lib/test/regrtest.py(需要很长时间) ▌调试Python代码 1、最简单:用 print() 2、其次,用 breakpoint() ▌调试C代码 1、如果你有

    77210

    资源 | CommandCenter:基于暴雪官方API星际争霸2 AI Bot

    近日,AIIDE 星际争霸 AI 对抗赛组织者 David Churchill 发布了基于暴雪星际 2 API AI bot 框架,为开发者们构建人工智能,挑战这一复杂游戏提供了一种基础工具。...下载和使用 如果你只想下载和运行,看看它和星际争霸 2 内置 AI 对战效果如何,你可以下载预编译版本:https://github.com/davechurchill/commandcenter/tree.../master/release 你必须拥有星际争霸 2 正版最新版本游戏才能运行该 bot。...Directories」选项 点击右侧下拉箭头,然后点击编辑 修改现有的目录设置以指向 SC2API/lib 目录 在「Build」菜单中,单击「Build Solution」 「CommandCenter.exe.../bin/」(貌似这个选项无法保存) CommandCenter/bin/BotConfig.txt文件必须在相同目录下,因此 .exe 才能正确运行 开发者安装/调试(Linux) 目前,在 Linux

    1.1K140

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

    Qt5.11.2 & VS2017 & 64位版本 静态编译 小伙伴们有没有遇到过,自己使用Qt库开发小程序,在本地电脑上跑得很欢快,但是当想要把编译好.exe可执行文件发给朋友玩玩时候,发现在没有安装...而如果想将生成程序连同所需要依赖库一起完整地打包成一个.exe可执行程序,那就需要使用静态编译。...以后也就只需要编译成一个exe,就能满地跑了哈~(自己动手尝试一下,还是挺好玩) 2、下载源码包 首先,我们需要从Qt官网(地址:http://download.qt.io/archive/qt/5.11...如果某一文件用了MTd版本,而其他文件用MT版本库,也就是说用了不同库,就会导致这个警告出现。...comment(lib, "userenv.lib") #pragma comment(lib, "msvcrtd.lib") #pragma comment(lib, "Dwmapi.lib

    1.1K20

    Cmake使用

    main.cpp ${HELLO}) 变量使用${}方式取值,但是在 IF 控制语句中是直接使用变量名 重要指令和CMake常用变量 重要指令 cmake_minimum_required – 指定CMake最小版本要求...—>相当于指定g++编译器-L参数 # 将/usr/lib/mylibfolder 和 ....# 表示上级目录 ../ # 表示上级目录 两种构建方式 内部构建(in-source build):不推荐使用 内部构建会在同级目录下产生一大堆中间文件,这些中间文件并不是我们最终所需要...执行make命令,生成target make CMake代码实践 针对第五章写两个小项目来写对应CMakeLists.txt 最小CMake工程 # Set the minimum version...make 当更改文件后 直接用make命令构建即可 make会只编译修改文件 调试步骤launch.json和tasks.json { "version": "0.2.0",

    1.4K30
    领券