中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > DLL
如何在非MFC扩展Dll中导出class说明及简单例子
作者:tpProgramer 时间:2001-10-08 10:07 出处:互联网 责编:chinaitpower
              摘要:如何在非MFC扩展Dll中导出class说明及简单例子

如何在Dll中导出class说明:

新建两个工程,其中一个是dll工程(我的示例程序中这个工程名为DllClass),另一个是测试和使用dll的工程(名字为DllClassTest)

 
注意点:
   1。Dll工程编译完成后,将.lib和.dll文件拷贝到测试和使用dll的工程的适当目录下(我的程序是release目录),然后将
      Dll工程中的导出类的头文件(以下简称头文件)拷贝到测试和使用dll的工程的适当目录下(在我的程序中是拷贝到此工程文件所

在目录),然后把这个拷贝过来的头文件通过下面2和3进行修改。

   2。在Dll工程中的头文件使用的是 #define DLLCLASS_API __declspec(dllexport)  表示导出
      在测试和使用dll的工程中的头文件使用的是 #define DLLCLASS_API __declspec(dllimport)   表示导入

   3。不论Dll工程的头文件如何实现(比如说包括内联函数等等),
       在测试和使用dll的工程中的头文件中全部都是声明而没有定义(即将类成员函数的实现部分去掉)

   4。在测试和使用dll的工程的那个文件中包含对dll库的引入,分两步:
       首先在是测试和使用dll的工程的setting菜单(按ALT+F7可以调出)中的LINK选项卡中的Object/Library modules:下填写对 dll
的连接,比如dll文件名字为DllClass.lib和DllClass.dll,则填写 Release/DllClass.lib(注意目录,我的程序中.lib文件是在目录release下)


       然后,添加对头文件的包含,比如dll文件名字为DllClass.lib和DllClass.dll,头文件为DllClass.h,则包含头文
件为 #include "DllClass.h"
 
    由此,就可以使用了。

相关源码如下:
dll工程中的DllClass.h 内容:
//此处在dll的头文件中为 dllexport,在应用文件中为dllimport
#define DLLCLASS_API __declspec(dllexport)

//导出一个类(包括其方法、属性)
class DLLCLASS_API CDllClass {
public:
 CDllClass(void);
 void MSG(const char * const str);
};

dll工程中的DllClass.cpp内容:
#include "stdafx.h"
#include "DllClass.h"

BOOL APIENTRY DllMain( HANDLE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
      )
{
    switch (ul_reason_for_call)
 {
  case DLL_PROCESS_ATTACH:
  case DLL_THREAD_ATTACH:
  case DLL_THREAD_DETACH:
  case DLL_PROCESS_DETACH:
   break;
    }
    return TRUE;
}


CDllClass::CDllClass()
{
 return;
}

void CDllClass::MSG(const char * const str)
{
  MessageBox(NULL,str,"",MB_OK);
}

Dll测试工程中的DllClass.h内容:
//此处在dll的头文件中为 dllexport,在应用文件中为dllimport
#define DLLCLASS_API __declspec(dllimport)

//导出一个类(包括其方法、属性)
class DLLCLASS_API CDllClass {
public:
 CDllClass(void);
 void MSG(const char * const str);
};
Dll测试工程中DllClassTest.cpp内容:
首部:
#include "DllClass.h"
class DllClass;

代码部分:
 CDllClass  CTest;
 CTest.MSG("this is a string into dll");

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有