看板 C_and_CPP 關於我們 聯絡資訊
最近想要研究如何寫dll.. 到處逛 終於知道如何寫mfc dll了 就po一篇心得上來跟大家分享 1.打開vs2005 建立一個MFC DLL專案(假設我名為 MFCDLLTest) 2.加入一個全域的function假設來做 * 10 的效果的 __declspec(dllexport) int multen(int num); 3.在cpp檔實作內容.. 做個意思意思的 __declspec(dllexport) int multen(int num){ return num*10; } 4.compile過後 這個專案就算完成了..此時有3個檔案必須保留下來 MFCDLLTest.h MFCDLLTest.dll MFCDLLTest.lib 這3個檔案保留給 要用此dll的專案 5.建立一個專案來引用此dll(假設名為TestDLL) 6.設定TestDLL的屬性 C++\一般 : 設定其他include目錄 來包含MFCDLLTest.h 連結器\輸入 : 設定其他相依性 來指定 MFCDLLTest.lib 7.在TestDLL當中想要呼叫multen 的檔案 include "MFCTestDLL.h" 8.加入 extern __declspec(dllexport) int multen(int num); 9.接下來就可以直接呼叫 multen 了 這是 當你能取得lib檔時才能使用的方法,如果你沒有lib檔 那就得靠 LoadLibrary 搭配 GetProcessAddress來呼叫dll內容了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.113.152.29
chrisdar: 這篇要M阿 09/06 08:24
maplefog:用LoadLibrary比較好 不會有name mangling問題 09/06 13:53
frank99977:其實我一直有個問題,剛好藉這篇順便問一下,不管是使 09/06 15:24
frank99977:用static loading或是dynamic loading都必須要知道dll 09/06 15:24
frank99977:檔裡面類別或是函數名稱才可以使用,問題就是如果要引 09/06 15:24
frank99977:用一個不知道裡面有什麼函數或類別時,這樣有辦法使用 09/06 15:24
frank99977:DLL嗎? 09/06 15:25
neigence:我也不曉得也 但好像有個東西叫dependency walker 09/06 18:39
neigence:可以幫忙找DLL檔裡面的函數名的樣子.. 09/06 18:40
WPC001:這有甚麼好M的阿? @@" 這... 09/06 20:37
frank99977:推一下 dependency walker 感謝 09/06 21:53