__declspec(dllimport)是什么意思?dll怎么导出一个类?

dhbo 2004-08-13 09:49:36
昨天晚上看<windows 核心编程〉对__declspec(dllimport)不是很了解,是什么意思呢?
是不是一个dll需要的外部输入呢?(比如说是从另外一个dll的输入)


dll怎么导出一个类呢?
dll中怎么写呢?

class AFX_EXT_CALSS MyClass{

....
};
在 def中怎么表述是导出一个类呢?
EXPORTS
???

或则不是这样写的?









不是很熟悉,看了别人的文章还是有点晕,谢谢
...全文
400 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dhbo 2004-08-16
  • 打赏
  • 举报
回复
如果是用def那种方式导出的类,def中是不是要导出你想要导出的函数呢?
如:
exports:
MyFunc

那么和导出函数有什么区别 阿?

如果使用__declspec(dllexport)导出,你的调用dll的程序应该怎么写呢?是不是通过一个全局的
变量来引用呢?
oyljerry 2004-08-14
  • 打赏
  • 举报
回复
你用__declspec(dllimport)的话,就表示需要从外部导入一个函数,来调用它
你可以通过__declspec(dllExport)和def两种方式来导出函数
AFX_EXT_CALSS用在你用常规MFC的动态链接的dll导出函数中
rivershan 2004-08-14
  • 打赏
  • 举报
回复
__declspec(dllExport)与def是两种不同的导出方法。。。
scaton 2004-08-14
  • 打赏
  • 举报
回复
这是你看的那本书上的例子,DLL的CPP文件及头文件:
CPP:
...
#define DIPSLIBAPI __declspec(dllexport)
#include "DIPSLib.h"
...

头文件DIPSLib.h:
#if !defined(DIPSLIBAPI)
#define DIPSLIBAPI __declspec(dllimport)
#endif

// External function prototypes
DIPSLIBAPI BOOL WINAPI SetDIPSHook(DWORD dwThreadId);

//////////////////////////////////
当某个exe调用DLL中的SetDIPSHook()函数时,只需包含:DIPSLib.h,由于没有定义DIPSLIBAPI宏,因而编译头文件时就将其定义为“导入函数”,表示该函数来自外部,没有太大意义(可以将其看成extern,甚至为“空”),而__declspec(dllexport)含义则明显得多。
dhbo 2004-08-13
  • 打赏
  • 举报
回复
__declspec(dllExport) 和AFX_EXT_CLASS是MFC用宏定义的方式写得,一样的,但是那位
给个简单的demo,导出和怎么引用呢?
如:


class AFX_EXT_CLASS Myclass{
private:
char name[20] ;
public:
GetName();
};
在def文件中不用写,还是该怎么写?
还有就是在应用程序中怎么用这个类呢?
snaill 2004-08-13
  • 打赏
  • 举报
回复
AFX_EXT_CALSS是可以直接引用的,就像在项目中的类一样,不过比较受MFC的限制
snaill 2004-08-13
  • 打赏
  • 举报
回复
AFX_EXT_CALSS是MFC特有的扩展方式

通过__declspec(dllExport)可以直接到到处类
dhbo 2004-08-13
  • 打赏
  • 举报
回复
应用程序怎么来引用这个类呢?也不明白
syy64 2004-08-13
  • 打赏
  • 举报
回复
AFX_EXT_CLASS 是扩展DLL的标志,只能在VC++程序中调用。

15,471

社区成员

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

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