2013-03-12 97 views
0

我的問題是,當你編譯你的C++程序時,爲什麼它被放到一個exe文件中?該文件可能會變大。你會使用dll庫來縮小尺寸,還是有其他文件可以製作?我只想知道如何製作一個使用單獨文件運行的程序。C++單獨的文件?

(編輯)我只是不希望它在一個單一的文件。文件最終可能會變得太大,以至於電腦無法處理它,對嗎?必須有一種方法來分離文件。就像在java中一樣,一切都在類文件中,這看起來更簡單,更高效。某些像FAT32這樣的驅動器不能有大於4千兆字節的文件,所以他們需要更多的細分程序。我看着我的遊戲門戶網站,它的EXE是100KB,它有大約100個DLL文件!

+0

爲什麼單個可執行文件會「太大」?如果沒有存儲資源(例如圖像/媒體),那麼在現代非嵌入式系統上就很難做到了。使用*邏輯*邊界的動態鏈接:應用程序的大部分*設計*作爲庫,現有的第三方庫,插件系統的模塊等。 – 2013-03-12 20:36:17

+1

與存儲或內存大小相比,我不再擔心exe文件的大小。早在20世紀90年代,我確實擔心這些事情。 – drescherjm 2013-03-12 20:36:42

+0

「文件最終可能變得太大,以至於計算機無法處理它」,這是非常不可能的,您將創建一個2GB可執行文件以用於32位平臺。 – drescherjm 2013-03-12 20:42:25

回答

2

爲什麼太大?如果這是由於存儲空間的限制,將其分割成多個文件不會爲您購買任何東西。除非您在某種平臺上溢出文件的最大大小(例如某些32位平臺上的2GB限制),這似乎不太可能發生,否則您可能擔心會出現問題。

您可以通過編譯器關閉調試選項減少生成的可執行文件的大小,「剝離」,它在各種平臺上,設置優化設置來優化代碼大小,而不是執行速度等

+0

製作2MB可執行文件(沒有資源或靜態鏈接外部/運行庫)甚至「難」,更不用說接近2GB了。編譯器輸出在空間頻譜上非常密集,編寫代碼需要更長的時間錄製視頻或創建大圖片。 – 2013-03-12 20:42:07

+0

-1這並不回答原來的問題,它是問如何將一個EXE分成多個文件。 – 2013-03-12 20:45:59

+4

這個問題是一個關於exe文件太大的誤解,而不是如何將它們拆分成許多dll的IMO ..這實際上會使它需要更長的時間加載和更多的磁盤空間由於簇大小舍入.. – paulm 2013-03-12 20:47:47

0

的根據OP的建議,將exe分成幾個文件(在Windows上)的方法是使用dll。

這些評論者是正確的,這實際上不會佔用磁盤空間更少,也不會保存任何內存,但還有其他原因可以將應用程序分成多個文件。例如,要共享代碼(單個dll可以被多個應用程序使用),或者幫助應用程序更快地加載(只在實際需要時加載dll)。

3

要回答你的問題,是的。如果你願意,你絕對可以將你的程序分成獨立的DLL文件。

我見過一些開發人員將實用函數編譯爲單獨的常見DLL文件,這些文件可以作爲參考引入其他項目中。這樣可以從中調用它的對象和方法。

事後看來,編譯代碼相對較小。二進制數據實際上消耗了大部分空間:視頻,圖像,模型,聲音等等。雖然對於較小的程序來說,將這些資源直接打包到可執行文件中是可能和常見的,但對於許多顯而易見的原因,這通常不是一個好主意。

最後,大型可執行文件對於當今的技術並不是一個大問題。對於較小的節目,我不會爲此而出汗。項目得到的越多,設計開發越多。