Re: [問題] java與C++ 關於inner class載入記憶體ꐠ…

看板Programming作者時間17年前 (2009/01/22 00:05), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《millerlai (Scent of Love)》之銘言: : Q2,Answer: : C++應該是與編譯器的參數設定有關(static or dynamic link),若在win32平台它會為 : 一個.cpp檔案產生一個.obj檔。若你設定為 Dynamic Link編譯為執行檔時,在執行程 : 式時,它應該只記錄所需的Symbol資訊,在執行期需要的時候才載入所需的.obj檔案。 : 而這些obj檔案在win32平台上,需要編譯為.dll檔。之後會透過OS提供的System : Loadlibrary的方式,做動態函式庫的載入。反之,static link就會直接都載入,當然 : 執行檔也會跟著變大。這要請C++的專家來回答XD 幫忙更正一下, 1. obj/lib並不是在執行期才載入, 編譯連結時就會弄進去 2. C++並沒有真正所謂Dynamic Link, 所謂的Dynamic Link是靠PE弄出來的 執行Win32程式時, 程式載入器會先讀取關於import DLL的資訊 並且使用LoadLibary / GetProcAddress這些函數把真實的函數載入到記憶體, 並在對應的位置填入表格 所以編譯器才會有 __declspec(dllexport) 與 __declspec(dllimport) 的宣告方式 要寫DLL必須把function宣告成 __declspec(dllexport) 等到要使用別人的函數時, 要改成__declspec(dllimport) 做宣告 不然就得自己使用LoadLibrary / GetProcAddress這些函數來自己搞了... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.61.174

01/22 00:28, , 1F
感謝澄清觀念 ^__^,我對Win32不熟 Orz
01/22 00:28, 1F

01/22 23:30, , 2F
很清楚 謝謝~
01/22 23:30, 2F
文章代碼(AID): #19TqV50b (Programming)
文章代碼(AID): #19TqV50b (Programming)