作者neigence ()
站內C_and_CPP
標題[心得] MFC DLL
時間Sun Sep 6 00:32:28 2009
最近想要研究如何寫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