Dll 使用篇

1 首先建立Dll

dll有三种 分别如下:

1 Non-MFC DLL:指的是不用MFC的类库结构,直接用C语言写的DLL,其输出的函数一
般用的是标准C接口,并能被非MFC或MFC编写的应用程序所调用。 

2 Regular DLL:和下述的Extension Dlls一样,是用MFC类库编写的。明显的特点是
在源文件里有一个继承CWinApp的类。其又可细分成静态连接到MFC和动态连接到MFC上
的,但静态连接到MFC的动态连接库只被VC的专业般和企业版所支持。

3 Extension DLL:用来实现从MFC所继承下来的类的重新利用,也就是说,用这种类
型的动态连接库,可以用来输出一个从MFC所继承下来的类。Extension DLL使用MFC的
动态连接版本所创建的,并且它只被用MFC类库所编写的应用程序所调用。

因为有MFC提供支持,所以编写第二程和第三程的Dll更简便,可把Dll当成是一个应用程序来使用,以下两种均以提供了CWinApp的继承类。

(1)俗称的共享数据段即可以用类定义public的变量,MFC真的是很方便,但是对于入口处理还不知道如何,这可要研究下MFC源码才能知道,我也是菜鸟,知道的请纠正下,呵。

(2)输出函数 一般定义为类的protected  在输出函数前加上extern "C" _declspec(dllexport) 即代表输出函数

很简单吧,就是这么简单。自己做做吧!! 

(3)这Dll重要就是在于输出接口吧,有输出了,可到下一步调用了,我说说C++调用Dll的方法吧,可能还有其它,但我只会这一种。 以下假如是做好了一个叫Easy.dll的文件。

   [1]先用到HINSTANCE ht=LoadLibrary("Easy.dll")    //Easy.dll是在当前文件夹下 就是把Dll加载进来

   [2]接着就是找到该模块的模块句柄 HMODULE hm=GetModuleHandle(_T("MyRegularDll"));

   [3]用GetProcAddress(hm,"输出函数名")来获得函数地址  这函数就是返回指向模块的函数指针,要怎么用呢,当然要知道接口了,就是说这个函数是怎么定义的比如Easy.dll里有个这样的输出函数定义:

   extern "C" _declspec(dllexport) void startHook(); 那么就要跟着这接口定义一个这样的函数指针,定义如下:

   typedef void (WINAPI * 函数指针名)()    其实就是和函数定义一样,只是函数名用(WINAPI * 函数指针)代替了

   [4]全定义好了,下面就可以用了。 如:

   typedef void (WINAPI * STARTHOOK)();

   STARTHOOK startH=GetProcAddress(hm,"startHook");

   startH();  //这就是调用函数    很简单吧。。 不会看不懂吧!!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值