VS项目属性 运行库 /MD 与/MDd有什么区别

好运萝 2019-04-22 05:16:11


就图上这俩 有什么区别
现在有一个工程 MDd会崩溃
MD能够运行
...全文
548 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
stherix 2019-04-23
  • 打赏
  • 举报
回复
引用 4 楼 KarivV 的回复:
[quote=引用 3 楼 stherix 的回复:] [quote=引用 2 楼 KarivV 的回复:] [quote=引用 1 楼 stherix 的回复:] /MD是以dll的形式引用c++运行库,exe文件内不会链接运行库 /MT则是lib静态引入,exe体积会增大 /MDd则是debug版本的dll,/MD是release版本的dll https://www.cnblogs.com/xzabg/p/5875296.html
难道是因为我使用的dll是编译的release版本 和debug不通用? [/quote] 你的项目如果是release版本,那么必须是不带d的 如果是debug版本,那么必须是带d的 这个一般都预设好了,不用管[/quote] 项目不是生成dll 而是调用dll 的确默认已经设置好了 但是现在有一个dll去调的时候 发现release版本能跑 debug会崩溃 然后排查 发现这个选项影响了调用 当选择debug版本并且把这个调用选项改成/MD的时候能跑 但是debug版本默认下这个选项是/MDd的 所以在想是不是这个dll 本身就编译为release使用 那就很僵硬了[/quote] 一般发布的dll都是release的 或者提供2个版本供使用
好运萝 2019-04-23
  • 打赏
  • 举报
回复
引用 3 楼 stherix 的回复:
[quote=引用 2 楼 KarivV 的回复:] [quote=引用 1 楼 stherix 的回复:] /MD是以dll的形式引用c++运行库,exe文件内不会链接运行库 /MT则是lib静态引入,exe体积会增大 /MDd则是debug版本的dll,/MD是release版本的dll https://www.cnblogs.com/xzabg/p/5875296.html
难道是因为我使用的dll是编译的release版本 和debug不通用? [/quote] 你的项目如果是release版本,那么必须是不带d的 如果是debug版本,那么必须是带d的 这个一般都预设好了,不用管[/quote] 项目不是生成dll 而是调用dll 的确默认已经设置好了 但是现在有一个dll去调的时候 发现release版本能跑 debug会崩溃 然后排查 发现这个选项影响了调用 当选择debug版本并且把这个调用选项改成/MD的时候能跑 但是debug版本默认下这个选项是/MDd的 所以在想是不是这个dll 本身就编译为release使用 那就很僵硬了
stherix 2019-04-23
  • 打赏
  • 举报
回复
引用 2 楼 KarivV 的回复:
[quote=引用 1 楼 stherix 的回复:] /MD是以dll的形式引用c++运行库,exe文件内不会链接运行库 /MT则是lib静态引入,exe体积会增大 /MDd则是debug版本的dll,/MD是release版本的dll https://www.cnblogs.com/xzabg/p/5875296.html
难道是因为我使用的dll是编译的release版本 和debug不通用? [/quote] 你的项目如果是release版本,那么必须是不带d的 如果是debug版本,那么必须是带d的 这个一般都预设好了,不用管
好运萝 2019-04-23
  • 打赏
  • 举报
回复
引用 1 楼 stherix 的回复:
/MD是以dll的形式引用c++运行库,exe文件内不会链接运行库 /MT则是lib静态引入,exe体积会增大 /MDd则是debug版本的dll,/MD是release版本的dll https://www.cnblogs.com/xzabg/p/5875296.html
难道是因为我使用的dll是编译的release版本 和debug不通用?
stherix 2019-04-22
  • 打赏
  • 举报
回复
/MD是以dll的形式引用c++运行库,exe文件内不会链接运行库 /MT则是lib静态引入,exe体积会增大 /MDd则是debug版本的dll,/MD是release版本的dll https://www.cnblogs.com/xzabg/p/5875296.html
[VS2005]解决“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题” 今天在准备发布用VS2005写的那个程序时,拷贝到我同事机器上,双击突然出现了“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题“,这个问题很让我意外,以前只出现过缺少DLL的情况,而这次出现这个问题,让我一时没办法。想想,无非是两个原因引起的,要么是他没有安装VS2005的原因,要么是我的程序里依赖了其它的一些库。于是百度一下,发现好多相关主题。我是按照这个帖子解决的: 在VS2005下用C++写的程序,在一台未安装VS2005的系统上, 用命令行方式运行,提示: “系统无法执行指定的程序” 直接双击运行,提示: “由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题” 以前用VC6和VS2003的话, 如果缺少库文件,是会提示缺少“**.dll”,但是用VS2005却没有这样的提示。 自己实验了一下,感觉以下几种解决办法是可行的: 方法一: 在类似C:\Program Files\Microsoft Visual Studio 8\VC\redi st\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT 下找到了下列文件: msvcm80d.dll msvcp80d.dll msvcr80d.dll Microsoft.VC80.DebugCRT.manifest 把这几个文件拷贝到目标机器上,与运行程序同一文件夹或放到system32下,就可以正确运行了。 其他release版、MFC程序什么的都是拷redist下相应文件夹下的文件就可以了,文件夹后都有标识! 方法二: 修改编译选项,将/MD或/MDd 改为 /MT或/MTd,这样就实现了对VC运行时库的静态链接,在运行时就不再需要VC的dll了。 方法三: 工程-》属性-》配置属性-》常规-》MFC的使用,选择“在静态库中使用mfc” 这样生成的exe文件应该就可以在其他机器上跑了。 方法四: 你的vc8安装盘上找到再分发包vcredist_xxx.exe和你的程序捆绑安装

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧