如何导出一个类?

ustc 2002-02-25 04:24:40
加精

我不能用MFC,所以,不要告诉我用MFC的方法!

我等不了多长时间, 谁先告诉我并且让我满意我就给谁分!
...全文
98 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tpProgramer 2002-02-25
  • 打赏
  • 举报
回复
如何在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");
masterjames 2002-02-25
  • 打赏
  • 举报
回复
COM

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧