作者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
1F:推 chrisdar: 这篇要M阿 09/06 08:24
2F:→ maplefog:用LoadLibrary比较好 不会有name mangling问题 09/06 13:53
3F:→ frank99977:其实我一直有个问题,刚好藉这篇顺便问一下,不管是使 09/06 15:24
4F:→ frank99977:用static loading或是dynamic loading都必须要知道dll 09/06 15:24
5F:→ frank99977:档里面类别或是函数名称才可以使用,问题就是如果要引 09/06 15:24
6F:→ frank99977:用一个不知道里面有什麽函数或类别时,这样有办法使用 09/06 15:24
7F:→ frank99977:DLL吗? 09/06 15:25
8F:→ neigence:我也不晓得也 但好像有个东西叫dependency walker 09/06 18:39
9F:→ neigence:可以帮忙找DLL档里面的函数名的样子.. 09/06 18:40
10F:→ WPC001:这有甚麽好M的阿? @@" 这... 09/06 20:37
11F:推 frank99977:推一下 dependency walker 感谢 09/06 21:53