社区
C++ 语言
帖子详情
关于DLL导出函数的问题
WilliamJ
2006-04-19 10:55:04
我看到某个库有一个抽象类,类成员函数全是纯虚的,但是这些函数前面没加类似 dll_export的导出修饰符,却可以在加载DLL后调用这些函数,请问这是怎么实现的?
...全文
201
10
打赏
收藏
关于DLL导出函数的问题
我看到某个库有一个抽象类,类成员函数全是纯虚的,但是这些函数前面没加类似 dll_export的导出修饰符,却可以在加载DLL后调用这些函数,请问这是怎么实现的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Johnny_de
2006-04-21
打赏
举报
回复
干吗不给我分!
WilliamJ
2006-04-20
打赏
举报
回复
谢谢大家!
的确是有该类的头文件,并且该类和成员函数都没dll导出符.
这我就不懂了,只有头文件,没有声明导出,那么客户的程序怎么找到dll中相应的成员函数呢?
是怎么个原理啊?还是这些成员函数的实现代码都在dll对应的.lib文件中,而不在dll中?
JohnTitor(贱畜)说:" 在加载了dll后,客户端肯定会调用该dll的一个导出函数来获得该抽象类的一个子类实例的指针,然后通过该指针,就可以调用那些头文件中定义的虚函数了",这句话我不是太明白,能否给一个短的实例代码?
healer_kx
2006-04-20
打赏
举报
回复
是的,这个和COM很像了。
虚接口是不用导出的。
相反,你在这个接口内有函数实现的话,你的客户程序调用这个函数,如果没有导出,就链接不上了。
Johnny_de
2006-04-20
打赏
举报
回复
我比较赞同sankt(黄景天) ( ) 信誉:110 的看法,这和COM原理是一样的。
逸学堂
2006-04-20
打赏
举报
回复
dll本身不可能导出纯虚函数,lz看看是否有包含这个dll中这个类的头文件。
或者如同sankt(黄景天)说的在.def文件中指明了导出类。
sankt
2006-04-20
打赏
举报
回复
也有可能是在.def文件指明了导出类
WilliamJ
2006-04-20
打赏
举报
回复
太谢谢 这位仁兄了:
JohnTitor(贱畜) ( ) 信誉:100 2006-04-20 14:13:00 得分: 0
解开了我所有疑问,给分,给分喽.
JohnTitor
2006-04-20
打赏
举报
回复
比如你头文件中的抽象类为IBase,那么dll可能会导出一个函数IBase* CreateInstance(),
该函数在dll中创建一个IBase派生类的对象,并且返回该对象的指针给你。你在客户端中因为有
IBase类的头文件,所以可以定义一个IBase的指针,如IBase* pInst;所以可以通过
调用pInst = CreateInstance()来获得dll中IBase派生类的对象的地址,而后通过pInst来
调用那些头文件中的虚函数,而又因为这些都是虚函数,所以实际调用的是dll中的IBase派生类
所重写的虚函数。
JohnTitor
2006-04-19
打赏
举报
回复
类成员函数全是纯虚的,没有实现代码,就不需要导出了,只需要有这个类的头文件就可以使用了。这和com的接口是一样的,在加载了dll后,客户端肯定会调用该dll的一个导出函数来获得该抽象类的一个子类实例的指针,然后通过该指针,就可以调用那些头文件中定义的虚函数了
llf_hust
2006-04-19
打赏
举报
回复
可能别人事导出的整个类吧
Depends.Exe
Depends用来显示与一个可执行文件(exe或者
dll
)相关的依赖项(
dll
),以及该exe或
dll
引用了这些
dll
中的哪些接口。 同时也可以看到每个被依赖的
dll
中的所有
导出
的
函数
接口。
c语言
dll
导出
函数
,关于
Dll
导出
函数
名
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////我们知道为了让
DLL
导出
一些
函数
...
VC++
DLL
导出
函数
经常使用VC6的Dependency查看
DLL
导出
函数
的名字,会发现有
DLL
导出
函数
的名字有时大不相同,导致不同的原因大多是和编译
DLL
时候指定
DLL
导出
函数
的界定符有关系。 VC++支持两种语言:即C/C++,这也是造成
DLL
导出
...
DLL
的
导出
函数
DLL
的
导出
函数
,__declspec(
dll
export),.def模块定义文件,extern “C”区别一,__declspec(
dll
export)二,.DEF模块定义文件三,__declspec(
dll
export)和def文件的区别1,显式调用2,隐式调用四,结论 &...
DLL
导出
函数
的两种方法和存在的坑 2021-10-11
DLL
导出
函数
的两种方法和存在的坑使用
dll
export
导出
函数
使用.def文件
导出
函数
使用
dll
export
导出
函数
函数
声明如下: 分几种情况讨论,是否使用extern “C”和__stdcall,共分为以下四种情况, _declspec(
dll
export)...
C++ 语言
64,682
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章