VS2019 为什么我的C++程序不能在别人电脑运行
将一个很简单的程序编译得到一个*.exe文件。
在本地自然可以顺便运行,有时候你刚刚做完一个这样的练习,迫不及待地要向朋友炫耀一下。一脸淫笑的你守在QQ旁正期待着赞扬的词汇,一边又脑补一下朋友的崇拜,可时间似乎凝固了,仿佛过了一个世纪后——“你发的这东西我怎么打不开啊?”
为什么会这样呢?
原因是VS默认为动态编译。
在之前的教程里我们学了静态编译与动态编译的区别,我再把他搬过来:
静态编译在程序编译时dll会被连接到目标代码中,程序运行时将不再需要该静态库。
动态编译在程序编译时dll并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。
我们只需设置为静态编译即可,让dll写进exe内,没有外部库也可以运行。
然后重新编译即可。
对于VS来说:
静态编译/MT,/MTD 是指使用libc和msvc相关的静态库(lib)。
动态编译,/MD,/MDd是指用相应的DLL版本编译。
值得注意的是,使用静态编译会让程序变大。
作者:jsp
-------------------------------------------
个性签名:无论在哪里做什么,只要坚持服务、创新、创造价值,其它的东西自然都会来的。
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
标签:
C++
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现