您的位置:逆风者 VC++ 正文
 添加时间:2007-09-01 原文发表:2007-08-31 人气:277 来源:vckbase.com

本文章共2627字,分2页,当前第2页,快速翻页:
 
  从上述阐述可以看出,对于DLL导出函数而言,在DLL头文件中声明了一次,而在隐式调用时,又声明了一次,为消除这种重复声明和减少文件数量,实际应用中通常将两个头文件合并成一个DLL头文件,同时定义一个宏,用于控制函数处于导出声明或调用导入声明状态。对于DLL定义文件,在包含DLL头文件之前,首先定义一个控制宏,用于声明所有的函数为导出函数;而在隐式调用中,在包含DLL头文件时不需要定义控制宏,用于声明所有的函数为导入函数。因此最终的DLL头文件格式如下:

#ifndef _DLLMODULENAME_H

#define _DLLMODULENAME_H



#include <>

#include ""



/*

 *	if using C   Compiler to compile the file, adopting C linkage mode

 */

#ifdef __cplusplus

extern "C" {

#endif



// according to the control macro, deciding whether export or import functions

#ifdef _DLLMODULENAME_

#define DLLMODULENAME_LIB_API __declspec(dllexport)

#else

#define DLLMODULENAME_LIB_API __declspec(dllimport)

#endif



// functions declarations

DLLMODULENAME_LIB_API returntype FuncName (parameters);

// ... more declarations as needs



#undef DLLMODULENAME_LIB_API



#ifdef __cplusplus

}

#endif



#endif

5、DLL头文件的使用

逆@风@者
  DLL导出函数的链接、导入、导出指示符在函数第一次声明时确定,在以后的函数声明和定义时,函数都接受第一次函数的链接、导入、导出声明,不必再次对函数作链接、导入、导出声明,因此DLL导出函数的定义文件中,可以使用如下的编码格式:


/*

 *	ensure compiler to compile correctly, through including 

 *  the precompiled headers, or else resulting in C1010 error

 */

#include "stdafx.h"



#define _DLLMODULENAME_



#include "dllmodulename.h"





returntype FuncName (parameters)

{

	// function body

}



// other functions definitions

  而在调用文件中,只需要包含头文件即可,即使用#include "dllmodulename.h"语句实现对DLL导出函数的导入声明。

参考文献

  • Joseph M. Newcomer. The Ultimate (DLL) Header File,www.codeproject.com
  • 《Windows核心编程》第四版,机械工业出版社


 
本文章更多内容<<上一页 - 1 - 2
相关文章

用 Web 服务进行二进制序列化和 BinaryForm
QQ2006 界面编程之鸡蛋里挑骨头
在你的程序中如何使用CButtonST类
Buffer Overruns,portability和其它...
自动隐藏停泊窗体实现
模拟 Windows 下 CPU 占用率的控件及其实现
VC中基于 Windows 的精确定时
DLL初学者指南(非MFC)
如何使用BHO定制你的Internet Explorer浏览
使用socket套接字时的两点经验
如何在 C# 中加载自己编写的动态链接库
软件测试悖论
VC 操作 SQL Server 主从表
C语言高效编程的几招
软件框架的利器、TangramMini组件应用教程二
GDI和GDI 对象的相互转换
PE文件格式详解(下)
计算MDI子窗口数,仅显示文件夹的打开对话框
基于MFC对话框的NT服务程序框架
关于控件注册和使用许可问题的解决办法

相关评论


本文章所属分类:首页 VC++

  热门关键字: