VC.net环境下轻松实现DLL编程
2005-11-21 13:15
232 查看
在我们实际用软件时,经常可看到许多动态连接库。动态连接库有其自身的优点如节省内存、支持多语种等功能,而且,当DLL中的函数改变后,只要不是参数的改变调用起的函数并不需要重新编译。这在编程时十分有用。
而DLL在VC中有三种形式:
1、Non-MFC Dlls
2、Regular Dlls
3、Extension Dlls
Non-MFC DLL:指的是不用MFC的类库结构,直接用C语言写的DLL,其输出的函数一般用的是标准C接口,并能被非MFC或MFC编写的应用程序所调用。
Regular DLL:和下述的Extension Dlls一样,是用MFC类库编写的。明显的特点是在源文件里有一个继承CWinApp的类。其又可细分成静态连接到MFC和动态连接到MFC上的。但静态连接到MFC的动态连接库只被VC的专业般和企业版所支持。
Extension DLL:用来实现从MFC所继承下来的类的重新利用,也就是说,用这种类型的动态连接库,可以用来输出一个从MFC所继承下来的类。Extension DLL使用MFC的动态连接版本所创建的,并且它只被用MFC类库所编写的应用程序所调用。
通常情况下,我们只需要使用第一种形式的DLL即可,下面将具体介绍如何在VC.net环境下快速实现DLL编程。
图1 创建DLL项目一、创建DLL项目
如图1,在左边窗口选择Visual C++项目下的Win32,在窗口右面选择Win32控制台项目,在窗口下方填入项目名称,然后点击确定按钮。出现图2应用程序向导窗口。
在图2中,左边选择“应用程序设置”,然后在右面的窗口中选择应用程序类型为DLL,附加选项中将导出符号项钩上。具体见(图2)。
钩上导出符号选项后,在随后生成的DLL项目中就会有简单例子示例,从而很简单的就能添加自己所需要的函数和类。
最后点击确定按钮。一个DLL项目就完成了。
图2 应用程序设置
二、编写所需函数或类
在产生的DLL项目中选择testDLL.h文件,会有下面的一些代码示例:
// 此类是从 testDLL.dll 导出的
class TESTDLL_API CtestDLL {
public:
CtestDLL(void);
// TODO: 在此添加您的方法。
};
extern TESTDLL_API int ntestDLL;
TESTDLL_API int fntestDLL(void);
其中class TESTDLL_API CtestDLL是如何到处类的实例。
TESTDLL_API int fntestDLL(void)是如何导出函数的实例。
extern TESTDLL_API int ntestDLL是如何到处变量的实例。(由于是在testDLL.cpp中定义的,所以这边使用的extern作为远程声明。)
即所有需要导出的类、函数、变量,只需要在他们的定义前增加TESTDLL_API即可。而TESTDLL_API是在testDLL.h中由VC.net自己自动生成的。具体生成文件见testDLL.h。
#ifdef TESTDLL_EXPORTS
#define TESTDLL_API __declspec(dllexport)
#else
#define TESTDLL_API __declspec(dllimport)
#endif
如上所述,就可以将所要转化成DLL的工程很容易的轻松实现。
图3 testDLL.h文件
图3 testDLL.h文件
图3 testDLL.h文件
图3 testDLL.h文件
而DLL在VC中有三种形式:
1、Non-MFC Dlls
2、Regular Dlls
3、Extension Dlls
Non-MFC DLL:指的是不用MFC的类库结构,直接用C语言写的DLL,其输出的函数一般用的是标准C接口,并能被非MFC或MFC编写的应用程序所调用。
Regular DLL:和下述的Extension Dlls一样,是用MFC类库编写的。明显的特点是在源文件里有一个继承CWinApp的类。其又可细分成静态连接到MFC和动态连接到MFC上的。但静态连接到MFC的动态连接库只被VC的专业般和企业版所支持。
Extension DLL:用来实现从MFC所继承下来的类的重新利用,也就是说,用这种类型的动态连接库,可以用来输出一个从MFC所继承下来的类。Extension DLL使用MFC的动态连接版本所创建的,并且它只被用MFC类库所编写的应用程序所调用。
通常情况下,我们只需要使用第一种形式的DLL即可,下面将具体介绍如何在VC.net环境下快速实现DLL编程。
图1 创建DLL项目一、创建DLL项目
如图1,在左边窗口选择Visual C++项目下的Win32,在窗口右面选择Win32控制台项目,在窗口下方填入项目名称,然后点击确定按钮。出现图2应用程序向导窗口。
在图2中,左边选择“应用程序设置”,然后在右面的窗口中选择应用程序类型为DLL,附加选项中将导出符号项钩上。具体见(图2)。
钩上导出符号选项后,在随后生成的DLL项目中就会有简单例子示例,从而很简单的就能添加自己所需要的函数和类。
最后点击确定按钮。一个DLL项目就完成了。
图2 应用程序设置
二、编写所需函数或类
在产生的DLL项目中选择testDLL.h文件,会有下面的一些代码示例:
// 此类是从 testDLL.dll 导出的
class TESTDLL_API CtestDLL {
public:
CtestDLL(void);
// TODO: 在此添加您的方法。
};
extern TESTDLL_API int ntestDLL;
TESTDLL_API int fntestDLL(void);
其中class TESTDLL_API CtestDLL是如何到处类的实例。
TESTDLL_API int fntestDLL(void)是如何导出函数的实例。
extern TESTDLL_API int ntestDLL是如何到处变量的实例。(由于是在testDLL.cpp中定义的,所以这边使用的extern作为远程声明。)
即所有需要导出的类、函数、变量,只需要在他们的定义前增加TESTDLL_API即可。而TESTDLL_API是在testDLL.h中由VC.net自己自动生成的。具体生成文件见testDLL.h。
#ifdef TESTDLL_EXPORTS
#define TESTDLL_API __declspec(dllexport)
#else
#define TESTDLL_API __declspec(dllimport)
#endif
如上所述,就可以将所要转化成DLL的工程很容易的轻松实现。
图3 testDLL.h文件
图3 testDLL.h文件
图3 testDLL.h文件
图3 testDLL.h文件
相关文章推荐
- 用VC轻松实现 ADO.net
- 用VC轻松实现 ADO.net
- 用VC轻松实现 ADO.net
- 用VC轻松实现 ADO.net
- VC++.NET2005中DataGridView控件中加入下拉框的编程实现
- 开源:.NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现(一)
- 在ASP.NET里轻松实现缩略图
- ASP.NET 2.0中轻松实现网站换肤
- Quartz.NET 轻松实现定时删除数据库数据
- VC++.net 整合开发环境使用技巧【转载】
- ASp.Net Websocket 环境支持和前端代码实现(二)
- 嵌入式SQL程序的VC+SQL server 2000实现的环境配置
- Visual C++ 环境下轻松实现报表处理
- ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(四) 之 用户搜索(Elasticsearch),加好友流程(1)。
- 利用《双缓冲技术及其在VC的GDI环境下的实现》理解armv7计数器中的双缓冲技术
- 关于ADO.NET,只须一个连接,一条SQL语句,轻松实现增删改查
- VC 轻松实现非客户区按钮
- ASP.NET与JavaScript轻松实现输入信息验证
- 双缓冲技术及其在VC的GDI环境下的实现
- 在虚拟主机上用asp.net轻松实现urlrewrite