VS2019 為什么我的C++程序不能在別人電腦運行


將一個很簡單的程序編譯得到一個*.exe文件。

在本地自然可以順便運行,有時候你剛剛做完一個這樣的練習,迫不及待地要向朋友炫耀一下。一臉淫笑的你守在QQ旁正期待着贊揚的詞匯,一邊又腦補一下朋友的崇拜,可時間似乎凝固了,仿佛過了一個世紀后——“你發的這東西我怎么打不開啊?”

為什么會這樣呢?

原因是VS默認為動態編譯。

在之前的教程里我們學了靜態編譯與動態編譯的區別,我再把他搬過來:

靜態編譯在程序編譯時dll會被連接到目標代碼中,程序運行時將不再需要該靜態庫。

動態編譯在程序編譯時dll並不會被連接到目標代碼中,而是在程序運行是才被載入,因此在程序運行時還需要動態庫存在。

我們只需設置為靜態編譯即可,讓dll寫進exe內,沒有外部庫也可以運行。

 然后重新編譯即可。

對於VS來說:

靜態編譯/MT,/MTD 是指使用libc和msvc相關的靜態庫(lib)。

動態編譯,/MD,/MDd是指用相應的DLL版本編譯。

值得注意的是,使用靜態編譯會讓程序變大。

 

參考:https://blog.csdn.net/nullccc/article/details/81015012


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM