DLL初学(一)

  今天为了一个必须要使用动态连接库的项目而开始学习这个技术,相对来说动态链接库学习起来还是有点复杂的。我现在学习这个知识也不是系统的学习而是学习了一些使用方法,希望后面争取一些时间能够系统的学习一下!

  首先我使用的环境是VC++6.0 这个编译器估计现在没有多少人用了基本上都升级到VS2008以及VS2010,但是我还是喜欢从相对原始的工具使用,因为他的文档资料相对很多。

  要使用动态连接库,就需要先导入动态连接库*.dll文件,不过你要是创建Win32 Console Application 这类项目,并且不支持MFC的话那么你就需要导入一个windows.h的头文件,其实一开始我希望不载入这个头因为这是开发win32的程序的而我的是命令模式的,但是由于对windows的编程也不是很了解,因此留作以后探查。

  我们事先已经知道dll文件里的方法了,那么只需要把里面的方法提取出来使用就可以了,这个调用模式是需要一个函数指针,这个函数指针直接指向dll文件里面的函数地址,例如:

 

声明一个返回int类型,并且含有3个参数的函数指针,并且利用typedef来定义其别名lpNcOpen类型。

  定义一个HINSTANCE的变量,这个变量被赋值为一个dll的句柄,然后使用LoadLibrary函数加载dll文件返回这个dll的句柄,例如:

(如果dll文件放在debug文件夹下则不需要写出dll的全部路径否则必须写出全路径)。

  判定hDll是否为空,如果为空表示没有获取句柄,如果不为空则说明获取了句柄。

  调用GetProcAddress函数来返回一个函数的指针,这里需要强制转换,转换成所声明的对应的函数指针,其参数填写DLL文件的句柄,以及函数的真实名称,例如:

  最后就是使用函数指针来使用此方法。

代码示例:

 

 

 

posted on 2011-09-07 15:49  佩恩六道  阅读(244)  评论(0编辑  收藏  举报