将一个很简单的程序编译得到一个*.exe文件。
在本地自然可以顺便运行,有时候你刚刚做完一个这样的练习,迫不及待地要向朋友炫耀一下。一脸淫笑的你守在QQ旁正期待着赞扬的词汇,一边又脑补一下朋友的崇拜,可时间似乎凝固了,仿佛过了一个世纪后——“你发的这东西我怎么打不开啊?”
为什么会这样呢?
原因是VS默认为动态编译。
在之前的教程里我们学了静态编译与动态编译的区别,我再把他搬过来:
静态编译在程序编译时dll会被连接到目标代码中,程序运行时将不再需要该静态库。
动态编译在程序编译时dll并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。
我们只需设置为静态编译即可,让dll写进exe内,没有外部库也可以运行。
然后重新编译即可。
对于VS来说:
静态编译/MT,/MTD 是指使用libc和msvc相关的静态库(lib)。
动态编译,/MD,/MDd是指用相应的DLL版本编译。
值得注意的是,使用静态编译会让程序变大。
参考:https://blog.csdn.net/nullccc/article/details/81015012
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/119518.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...