社区
进程/线程/DLL
帖子详情
使用.def模块定义文件如何导出类?
cdeee
2005-05-29 03:01:33
不想使用__declspec(dllexport)而单独使用.def文件导出类,不知道如何实现?
...全文
1386
7
打赏
收藏
使用.def模块定义文件如何导出类?
不想使用__declspec(dllexport)而单独使用.def文件导出类,不知道如何实现?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cdeee
2005-06-16
打赏
举报
回复
使用虚拟基类太麻烦了,如果这样的话我还不如用两个头文件,一个使用__declspec(dllexport)导出,另一个使用__declspec(dllimport)导入。
有没有什么办法直接在 .def 模块中导出类啊?
BigFanOfCpp
2005-06-16
打赏
举报
回复
.DEF文件里只能写导出的函数符号名,我没有写过类名.
所以如果你要导出类的话,就要用__declspec(dllexport),或者用楼上说的"代理类"的方法,如果你想获得更深入的了解,我建议你参考<<COM本质论>>的第一章.
chy317chy
2005-06-15
打赏
举报
回复
1,把你要从dll输出的每个类,都设计一个基类,这是个纯虚,即所有函数都是“virtual...=0;”的。把这些写成一个.h;
2,把dll里的类都从相应的基类派生,并实现每一个纯虚函数。并给dll设计一个可动态导出的函数,这个函数里 return new CxxxInDll;
3,在调用dll的程序里定义纯虚基类的指针,并赋予第二步返回的值。
现在可以动态加载、调用dll里的类了。看看COM原理,你就有启发了。熟练了后会发现这个方法在小型应用里非常有效!(在大型应用里,由于缺乏生存期控制,所以不安全)
需要补充的是:需要为每个类增加定义一个Release函数,函数里delete this,不要在调用dll的程序里直接delete从第二步获得的指针。
idAnts
2005-06-15
打赏
举报
回复
挨个把成员函数成员变量写一遍:
CXXX::Fxx @1
duxianghe
2005-06-15
打赏
举报
回复
类应该是一样的。
duxianghe
2005-06-15
打赏
举报
回复
; MFCDll.def : Declares the module parameters for the DLL.
LIBRARY "MFCDll"
DESCRIPTION 'MFCDll Windows Dynamic Link Library'
EXPORTS
; Explicit exports can go here
Create @1
Destroy @2
StartDisplay @3
StopDisplay @4
CaptureImg @5
GetDeviceParam @6
ReadVideoParam @7
SetVideoParam @8
cdeee
2005-05-30
打赏
举报
回复
没人知道啊?:(
如何通过.
def
文件
的方式
导出
类
参考文献: http://forums.codeguru.com/showthread.php?364061-How-to-export-c-class-in-DLL-using-
DEF
-file https://www.codeproject.com/Articles/28969/HowTo-Export-C-classes-from-a-DLL [HowTo: Export C++ class
使用
模块
定义
文件
(.
def
)
文件
生成dll
一、什么是.
def
文件
模块
定义
(.
def
)
文件
为链接器提供有关被链接程序的
导出
、属性及其他方面的信息。生成 DLL 时,.
def
文件
最有用。由于存在可代替
模块
定义
语句
使用
的链接器选项,通常不需要 .
def
文件
。也可以将 __declspec(dllexport) 用作指定
导出
函数的手段。在链接器阶段可以
使用
/
DEF
(指定
模块
定义
文件
)链接器选项调用 .
def
文件
。如果生成的 .ex
C++:
模块
定义
文件
声明(.
def
)的
使用
1. 概念 dll中有两种
导出
函数声明的方式:①__declspec(dllexport);②
模块
定义
文件
(.
def
) 其中,.
def
文件
为链接器提供有关被链接程序的
导出
、属性及其他方面的信息。 2. .
def
的
使用
方式 (1).
def
文件
的规则为:LIBRARY语句...
dll中的
模块
定义
文件
.
def
模块
定义
(.
def
)
文件
为链接器提供有关被链接程序的
导出
、属性及其他方面的信息。生成 DLL 时,.
def
文件
最有用。由于存在可代替
模块
定义
语句
使用
的链接器选项,通常不需要 .
def
文件
。也可以将 __declspec(dllexport) 用作指定
导出
函数的手段。在链接器阶段可以
使用
/
DEF
(指定
模块
定义
文件
)链接器选项调用 .
def
文件
。如果生成的 .exe
文件
没有
导出
,
使用
使用
DEF
(
模块
定义
)
文件
从 DLL
导出
函数和
类
块
定义
(.
def
)
文件
是包含一个或多个描述 DLL 各种属性的 Module 语句的文本
文件
。 它可以在不同的编译器上面用相同的名字, 如果不
使用
__declspec(dllexport) 关键字
导出
DLL 的函数,则 DLL 需要 .
def
文件
。 .
def
文件
必须至少包含下列
模块
定义
语句:
文件
中的第一个语句必须是 LIBRARY 语句。此语句
进程/线程/DLL
15,473
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章