技术开发 频道

基于VS2005环境下的DLL应用

    【IT168 技术文档】关于DLL的好处,我就不多说了,只需要记住几条:

  1) 可以实现代码集成封装。

  2) 实现生成的应用程序以文件为载体实现模块化。在升级程序版本的时候,不用重新对应用程序进行重新编译,则只需要将相应的DLL文件进行替换就行了。

  3) 可以实现跨语言调用。对于一些用C#作为主要开发语言的程序,需要C++进行接近硬件的底层操作时,可以通过DLL技术,实现语言的“混合”编程,C#具有开发高效性的特点,C++具有运行高效性和对底层的良好操作性的优点,DLL技术可以实现两种语言优点的结合。

  注:这些技术在WinXp和WinCe上都测试过,如果没有特别说明,在两种平台下都可以使用的,微软的产品还是具有一定的通用性的。

  1. VS2005建立基于C++的DLL项目

  本文主要是讲基于C/C++的DLL,因为这种基于C++的DLL不像C#建立的DLL那样依赖于.NET环境,移植性比较好。

  【文件】->【新建】->【项目】。选择C++语言里面的Win32控制台应用程序

1
 

  然后点击“确定”,再到后面的向导出进行设置

1
 

  “应用程序类型”选择“DLL”,可以选择公共头文件支持“ATL”或者“MFC”,一般都选择“MFC”。然后点击“完成”,那么VS2005就自动创建了一个基于C++的DLL模板了。

  生成项目,然后在对应的目录下面看到相应的DLL文件了,但是此时里面还没有任何功能,用户需要根据实际需求为DLL编写导出函数,然后供其它应用执行程序调用。

  2. 为DLL添加自定义导出函数

  主要的函数类型有下面三种或者三种的任意组合:

  1) 带传入参数无返回值函数。

  2) 有返回值函数。

  3) 带传出参数函数。

  前面的两种类型都比较简单,所以在下面也只作一些简单的介绍和代码演示。主要是第三种类型,在实现跨语言应用DLL的时候的作用最大,也是难度最高(反正自己是这么认为的)的一种高级应用吧,所以要进行详细介绍。

  2.1带传入参数无返回值函数

  在以前的那篇关于DLL的文章中提到过,在此不再赘述了。

  2.2有返回值函数

  一般只返回整数或者少量的字符串,这个应用也比较简单,用户到网上可以查到相关资料,所以也不再详细介绍了。

  2.3带传出参数函数

  通过上面提到的两种类型的函数,可以实现简单的基本数据类型的传入的传出。比如,传入两个整数a,b到一个表示加法的导出函数中,然后返回两者的和。这个是可以做到的,实现起来也比较容易,所以在此不详细说明。两个来对两种稍微高级点的数据传递进行说明:“特殊数据结构”和“大量数据集合”,这个时候如果还用那种简单的形参传入,返回值传出就无法解决问题了。还有,如果你熟练地掌握了传出参数的使用方法,那么你完全可以用此类形的方法实现返回值函数的数据传出功能。不过,关于传出参数,要想熟练应用,还需对指针、地址等概念有比较好的掌握。  

0
相关文章