VS2013编译的用c++写的win32程序兼容性问题

博客探讨了VS2013编译的C++ win32程序在其他电脑上运行时可能出现的msvcp文件缺失问题。问题源于运行时库依赖,解决方案是通过编译选项/MT将运行时库包含在执行文件中,以确保程序在任意机器上运行。同时,文章讨论了/MD和/MT的区别,以及选择/MT时需注意的堆空间释放问题。
摘要由CSDN通过智能技术生成

最近在用VS2013写程序,把编译好的exe在别人的电脑上运行就会出现缺少msvcp文件不能运行的情况。在网上搜了一下,问题原因如下:

C/C++程序运行时需要标准库的支持,Windows下为msvcrt.dll(C运行时)和msvcp(C++运行时),Linux下为libc.so和libstdc++.so。Windows XP里面自带VC 6.0的运行时,如果用VC 6编译的话可以正常运行。

VS 2013的运行时必须额外安装,也就是vc2013 redistribution。也可以像你现在做的这样,编译时选择/MT,这时运行时将直接包含在你的执行文件中,就可以在任意机器上运行。这也是为什么你的文件变得非常大,因为标准库的实现被包括进去了。

解决办法:

1、在生成解决方案时选择release,而不是debug。

2、编译时选择/MT,这时运行时将直接包含在你的执行文件中,就可以在任意机器上运行。

具体操作:

一、MD(d)、MT(d)编译选项的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值