→ diabloevagto:1.一定要給,你有用到其他lib的東西,不一起給,對方 10/17 13:17
→ diabloevagto:那邊使用到你的lib會不完全 10/17 13:17
感謝
另外順便問一下
如果我使用"inline"
能不能偷雞把對方已封裝的函式包進來
→ priv:我覺得這是根本觀念上的問題 10/17 13:20
→ priv:你要用到external的東西就一定要link,看從哪邊link的問題 10/17 13:20
→ priv:你build出來的library只會有你寫的程式的目的碼 10/17 13:23
→ priv:正常是不會幫你包進其它library的東西 10/17 13:23
→ priv:VC專案建起來的時候就有列出一些預設的函式庫了 10/17 13:25
→ priv:並不是只要inlcude就可以用,而是預設就會link 10/17 13:25
那我可以自己設定成預設link嗎?
→ priv:又或說你所謂的library是source release直接包在專案中 10/17 13:29
→ priv:編輯的時候直接幫你編好可以直接resolve到 10/17 13:30
→ priv:這樣就不需要特別去設定import library 10/17 13:30
這三行不太懂
可否詳述
感恩
推 purpose:VC的include目錄應該是找標頭檔用的 要 %LIBPATH% 才是 10/17 13:34
語意有誤Sorry, 是%LIBPATH%沒錯,
我好奇的是為什麼用其他函式庫時(不一定是標準函式庫)
都不需要在linker(相依性)那邊連結lib檔
但自己寫出來的要?
感謝解答
※ 編輯: elfkiller 來自: 114.44.83.157 (10/17 13:42)
→ priv:因為他們的header裡面有指定好library name了 10/17 14:02
→ james732:你用哪個其他函式庫是不需要連結的…? 10/17 14:05
→ priv:例如#pragma comment( lib, "library" ) 10/17 14:05
→ priv:如果完全沒指定名稱compiler怎麼可能會曉得要去哪找 10/17 14:05
→ priv:所以我說是觀念的問題,不要用現象去導觀念 10/17 14:06
→ priv:而是要用正確的觀念去解釋現象 10/17 14:06
→ priv:如果同一個目錄下有不同版本的library 10/17 14:12
→ priv:照原po的想法可以只要加path就全部去搜尋,不就亂掉了 10/17 14:12
→ elfkiller:所以是因為一般函式庫都會在標頭檔加入pragma comment 10/17 14:54
→ elfkiller:我這樣理解的正確嗎? 10/17 14:54
→ elfkiller:也就是說如果用g++就要自己手動打? 10/17 14:55
→ james732:g++(該說Linux)通常是把.so檔放到系統的特定目錄 10/17 14:56
→ elfkiller:那.a檔呢? 對應於windows的.lib, 需要加-l指令嗎? 10/17 15:00
→ tropical72:我覺得你被 vc 養壞了 (還蠻常見的事) 10/17 17:28
→ tropical72:所有程式用到之 lib ,一定都要到齊,不論是 win/linux. 10/17 17:29
→ tropical72:而#pragma comment 是開放在程式碼裡指定連結的 lib. 10/17 17:30
→ tropical72:你即使不在程式碼裡寫,也可用 ide 設定,或在使用CL.exe 10/17 17:31
→ tropical72:(或Link.exe)時,指定引入lib(含指定path).g++如果可在 10/17 17:32
→ tropical72:程式碼裡,有類#pragma~之指令,你也不用再用下 -l 指令. 10/17 17:34
→ tropical72:結論是,雖vc讓人感覺平時沒連lib,但ide都做了預設動作. 10/17 17:36
→ tropical72:要在其它電腦執行時,所有lib都要到位. 10/17 17:37
→ sunneo:linux是可以把.a把他解壓縮為多個.o然後再重包啦... 10/17 19:26
→ sunneo:但那樣就不太對 10/17 19:27
→ scarsnight:雖然說..這真的不太對,不過如果你堅持只要一個lib 10/17 22:54
→ scarsnight:那就把所有lib打散再包吧..lib只是obj檔的打包檔案 10/17 22:54
推 littleshan:只做一個lib是辦得到的,但拜託別做這種蠢事 10/17 22:55
→ littleshan:如果別人連結了另一個lib也是包了同樣的東西進去 10/17 22:56
→ littleshan:linker會爆炸的 10/17 22:56
推 yayarice:lib只會把你在此lib裡的實作包進去 10/18 16:56
→ yayarice:你所參考的外部Lib檔的實作則不會包進去 10/18 16:56
→ yayarice:所以使用你lib的人必須要把你參考的lib也link起來 10/18 16:57
→ yayarice:不然就會找不到符號 出現連結錯誤 10/18 16:57
→ yayarice:如果你想要別人只link你的就OK 你可以包成dll 10/18 16:57
→ yayarice:dll會把你參考到的外部符號所有包進去 沒參考的不會 10/18 16:58