閑聊c/c++ 5: Visual Studio c++必要的背景知識--鏈接與編譯

HowTo:

1) 如何創(chuàng)建和編寫靜態(tài)鏈接庫
2) 如何創(chuàng)建可執(zhí)行文件  
3) 如何創(chuàng)建頭文件和cpp文件
4) 如何相對路徑尋址
5) 如何進行手動靜態(tài)庫鏈接
6) 如何編譯部分或全部程序

在撰寫Libuv源碼分析的第二篇時,感覺有些基礎(chǔ)的,通用的背景知識(主要是vc++相關(guān)方面的)還是單獨列出來,作為一篇bolg吧。


目的:通過模仿Libuv的結(jié)構(gòu)和編譯流程,分享一下如何使用vs c++編輯器和編譯器,最起碼知道如何進行vs c++程序的鏈接和編譯。

按照Libuv的組織架構(gòu),將整個程序分成兩個部分:

1)  一個簡單的類型為靜態(tài)鏈接庫(.lib)的程序,僅導(dǎo)出一個函數(shù) void sayHelloWorld(); 用于打印出"hello world!"。

2)  一個簡單的類型為exe程序,鏈接上面的HelloWorld.lib,并調(diào)用其導(dǎo)出的sayHelloWorld()函數(shù)。

通過這個簡單的例子,讓我們來探索一下整個流程和關(guān)鍵點。對于新手來說,請重點關(guān)注c/c++的頭文件和鏈接庫的相對路徑設(shè)置是如何設(shè)置的!

流程1:

可執(zhí)行程序(.exe)項目工程


1) 到開你的vistual studio,左側(cè)選擇win32,新建一個win32/控制臺/空項目
新建win32控制臺應(yīng)用程序.png
應(yīng)用程序設(shè)置為空項目而不是預(yù)編譯頭.png

之所以用空項目而不用default設(shè)置的預(yù)編譯頭,是為了簡單期間,使用預(yù)編譯頭雖然加速頭文件編譯,但是需要一些規(guī)則來支持的,因此簡單期間,還是使用空項目,自己手動創(chuàng)建頭文件和cpp文件
生成工程目錄后,只有一些空的文件夾

空項目.png

2) 創(chuàng)建c/c++入口函數(shù)文件main.cpp
![Uploading main.cpp_458382.png . . .]
main.cpp.png
3) 打開剛才創(chuàng)建的main.cpp,編寫一個main函數(shù),按F5快捷鍵,至少讓你寫的c/c++程序運行起來
主線程入口main函數(shù).png

一個簡單的exe程序完成了!


流程2:

靜態(tài)鏈接庫(.lib)項目工程


1)在sln解決方案中添加一個lib類型項目工程
新建靜態(tài)鏈接庫項目.png
新建lib.jpg
靜態(tài)鏈接庫_不要預(yù)編譯頭.png

2) 創(chuàng)建頭文件,聲明靜態(tài)鏈接庫要導(dǎo)出的函數(shù)原型
helloWorld.h.png
helloWorld.h函數(shù)原型.png
3) 創(chuàng)建cpp文件,include剛才聲明的頭文件,并實現(xiàn)函數(shù)原型
helloWorld.cpp.png
選擇cpp.png
4) 編譯LibHelloWorld靜態(tài)鏈接庫
編譯靜態(tài)鏈接庫.png
5) 編譯生成的目錄位置

![Uploading root_859380.png . . .]

生成目錄.png

流程3:

可執(zhí)行文件鏈接靜態(tài)庫

1) 在可執(zhí)行exe項目中如何相對路徑尋址
非常重要的相對路徑尋址.png
2) 可執(zhí)行文件鏈接如靜態(tài)庫,并調(diào)試運行,輸出結(jié)果
link_compile_result.jpg

到此,一個簡單的,包含靜態(tài)鏈接庫和可執(zhí)行文件的Demo演示完成了,通過該Demo,可以掌握很關(guān)鍵的一下知識:

1) 如何創(chuàng)建和編寫靜態(tài)鏈接庫
2) 如何創(chuàng)建可執(zhí)行文件  
3) 如何創(chuàng)建頭文件和cpp文件
4) 如何相對路徑尋址
5) 如何進行手動靜態(tài)庫鏈接
6) 如何編譯部分或全部程序

希望都大家有幫助!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容