一、編譯的四個步驟
1.預處理
預處理是系統在編譯之前,根據需求對檔案進行修改。如#include「*.h」就是要求在編譯之前要把頭檔案加入到.cpp檔案中去;
2.編譯
編譯就是將cpp檔案編譯成中間**,或者說彙編**;
3.彙編
彙編就是將中間**(彙編**)編譯成機器可以識別的二進位制**,即機器碼;
4.鏈結
根據機器碼鏈結所用到的庫,即呼叫庫中的函式或者變數等;
5.生成可執行碼
通過鏈結等在windows下可以生成.exe可執行檔案,在linux下生成其他型別的二進位制**,可以直接執行。
二、關於靜態鏈結庫.lib和動態鏈結庫.dll
靜態鏈結庫就是在生成可執行檔案時候,將靜態庫內容直接拷貝到執行程式裡面,這樣該可執行檔案可以放在其他機器上面直接執行,缺點是,如果多個程式都應用了該靜態庫,則都會一一拷貝,會增加記憶體空間;
動態鏈結庫就是程式只有在執行時候才鏈結上,即如果該執行程式拷貝到其他機器上執行,動態鏈結庫也要拷貝過去,並且注意路徑。這樣的優點就是多個程式只有在執行的時候才會鏈結該庫,其他時候則不利用。
三、關於visual studio2010編譯動態鏈結庫.dll和靜態鏈結庫.lib
1.新建專案-》win32專案-》dll+空專案-》完成
2.在解決方案資源管理器,右擊專案標頭檔案,新增.h輸入標頭檔案內容;
3.原始檔新增.cpp檔案輸入內容;
4.生成-》生成解決方案即可得到dll檔案;
5.靜態鏈結庫的生成與1相同,只是不是dll+空專案,而是靜態庫+空專案;
6.生成解決方案可以得到靜態庫。
四、關於應用動態鏈結庫和靜態鏈結庫問題
1.將編譯好的.dll或者.lib靜態鏈結庫以及標頭檔案.h拷貝到新建的工程目錄下;
2.在工程屬性-》配置屬性-》vc++目錄-》包含目錄,輸入/…和
l/…中間用;隔開,表示工程可以自動尋找工程目錄下的標頭檔案;
3.如果還是有問題,則屬性嚇得可執行檔案目錄.bin檔案;包含目錄;庫目錄(.dll和.lib所在位址)補全完整;或者在c/c++-》常規-》附加包含目錄等補充完整即可;
4.包含目錄寫絕對位址也是可以的。
關於Visual Studio的條件編譯
最近把visual studio 2013 rc公升級到了visual studio 2013 rtm,順手查了一下關於軟體版本的知識,了解到通常軟體的正式版比測試版要小一些。原因在於在測試版期間,程式設計師新增了很多的測試用來排查軟體中的bug,這些測試 會被編譯到軟體中,軟體通常較大,而這些測試...
關於Visual Studio專案系統屬性中的巨集
宣告 歡迎任何人和組織 本blog中文章,但必須標記文章原始鏈結和作者資訊。開拓進取的小烏龜 csdn 點滴點點滴滴 blog 巨集 說明 configurationname 當前專案配置的名稱 例如 debug intdir 為中間檔案指定的相對於專案目錄的目錄路徑。它解析為 中間目錄 屬性的值。...
關於Visual Studio除錯時開啟的檔案路徑
如下圖所示是我工程資料夾內部 可以看到該路徑下還有3個資料夾 可能只有兩個,乙個是工程名,乙個是debug 也可能只有乙個,是工程名 一般而言,當你使用下圖所示的按鈕來編譯程式時,我們知道,這是進入除錯狀態,且會在你工程資料夾下產生乙個叫debug的資料夾,在這個資料夾下有可執行程式。那麼,如果你的...