在DLL中如何才能导出类?

srxumin 2008-11-06 07:54:33
我是第一次做MFC的DLL导出类,因为代码比较多,就不贴在这里。我把QQ留下:644960747,有意领分者请加我,用远程协助,或者直接传代码都可以,编译器是VC6。
请高手帮我解决以下3个问题,谢谢:
1、我只有2个类需要导出,但是在EXE文件里就是看不见DLL中导出的类
2、导出类的所有函数都出现以下警告:D:\Work\VC\Test\Network\Net.cpp(27) : warning C4273: 'CData::CData' : inconsistent dll linkage. dllexport assumed.不知是什么原因
3、能否在代码中直接教我AFX_EXT_CLASS这个宏是怎么用的?
...全文
195 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
编程夜猫 2008-11-06
  • 打赏
  • 举报
回复
上面的都说了
cnzdgs 2008-11-06
  • 打赏
  • 举报
回复
头文件中这样声明类:
class AFX_EXT_CLASS CData
{
// ……
};
DLL和EXE项目都包含这个头文件,EXE中还要导入DLL项目生成的LIB文件。
schlafenhamster 2008-11-06
  • 打赏
  • 举报
回复
已经收到,改好传给你
srxumin 2008-11-06
  • 打赏
  • 举报
回复
我已经照着上面的方法做了,就是无法找到,在QQ里解决一下不行吗?怕好友多我们解决问题后马上删除QQ好友,马上结帖给分。
srxumin 2008-11-06
  • 打赏
  • 举报
回复
shailen126 ,.h文件也要复制?
nostopping 2008-11-06
  • 打赏
  • 举报
回复
//DLL头文件:
#ifndef _A_B_C_H
#define _A_B_C_H

#ifdef DLLCLASS
#define DLLPORT _declspec(dllexport)
#else
#define DLLPORT _declspec(dllimport)
#endif

extern "C" class yourclassname
{
void DLLPORT ShowVersion(void);
.....
};
#endif

//DLL内容:
#define DLLCLASS
#include "stdafx.h"
#include "DLL.h"
#include <windows.h>

void yourclassname::ShowVersion()
{
MessageBox(NULL,"Version","TEST",MB_OK);
}

....
linger1216 2008-11-06
  • 打赏
  • 举报
回复

//DLL头文件
class _declspec(dllexport) yourclass //导出类
#else
class _declspec(dllimport) yourclass //导入类
#endif

//类的引用:
#include "..\DLL头文件.h"  //包含类声明头文件
#pragma comment(lib,"dll.lib");

int _tmain(int argc, _TCHAR* argv[])
{
//...
printf("hello world !\n");
return 0;
}
kingcrab 2008-11-06
  • 打赏
  • 举报
回复
楼上正解
shailen126 2008-11-06
  • 打赏
  • 举报
回复
创建MFC DLL工程,在你要导出的类前加AFX_EXT_CLASS就行了,
如 CLASS AFX_EXT_CLASS C×××:

。。。


就这么简单,类就导出了,再把生成的DLL文件。LIB文件。.h文件拷贝到EXE的工程中,在project setting ->link->object\library modules中加上lib文件,程序中加上头文件,直接用就行了。。

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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