[問題] Static library 觀念請教
我對static LIB的觀念一直都沒建立好
而這幾天遇到一些問題 自己做實驗 跟我目前有的觀念結論是完全相反
請教各位 請幫助我建立正確的觀念....
現在我先寫一個A.lib + A.h 裡面只有一個function叫 void A();編譯好後
再寫一個 B.lib時 我有個 void B(){會呼叫A();}
1.這邊和我觀念相反的是 我以為再編譯B.lib時 一定要附上A.lib 不然他會link不到
但事實上 我不用給A.lib 只用給A.h 他只用看到A()的宣告 就編譯的過去了
現在有個Program C.exe: 再寫時 我必須用到 B(); 所以我很自然的把B.lib和B.h拉到專
案裡
2. 呼叫了B()後 按下compile F5.....他卻說unresolved external symbol 找不到A()
跟我觀念又不一樣了....我以為B在compile成B.lib時 會把A.lib的內容給包起來.....所
以只用給B.lib就夠了
事實上卻必須把A.lib和B.lib都給c.exe去compile 而且不解的是A.h不用給c.exe 他就
認得到A()
========================================================================
以上關於兩點
到底為什麼會這樣呢???
想了解一下實際上的原理....
我一直把.lib想成是和cpp的角色一樣
所以會把2. 這邊認為是 B.lib會包好A.lib的內容
就算是真的把A.lib拉進去專案 但是我並沒有include a.h 應該呼叫B()時候 他會說沒
有define A()吧?
但顯然我觀念錯了 根本就類似dll的感覺 要用的話要拿進來 只不過compile time用到
而已
我環境是VC9
請教各位 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.64.222
推
08/25 13:40, , 1F
08/25 13:40, 1F
→
08/25 13:40, , 2F
08/25 13:40, 2F
→
08/25 13:42, , 3F
08/25 13:42, 3F
→
08/25 13:42, , 4F
08/25 13:42, 4F
→
08/25 13:44, , 5F
08/25 13:44, 5F
→
08/25 15:00, , 6F
08/25 15:00, 6F
→
08/25 15:00, , 7F
08/25 15:00, 7F
→
08/25 15:06, , 8F
08/25 15:06, 8F
推
08/25 15:20, , 9F
08/25 15:20, 9F
→
08/25 20:13, , 10F
08/25 20:13, 10F
推
08/25 21:37, , 11F
08/25 21:37, 11F
→
08/25 21:37, , 12F
08/25 21:37, 12F
→
08/25 21:38, , 13F
08/25 21:38, 13F
→
08/25 23:33, , 14F
08/25 23:33, 14F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):