社区
ATL
帖子详情
拿到dll,如何判断是com组件还是普通的dll?
zerotodream
2011-12-01 02:37:37
如题,拿到一个dll,但是不知道是com组件还是普通的dll。
用dumpbin也没显示什么具体信息。
有什么命令可以查看么?
...全文
1263
13
打赏
收藏
拿到dll,如何判断是com组件还是普通的dll?
如题,拿到一个dll,但是不知道是com组件还是普通的dll。 用dumpbin也没显示什么具体信息。 有什么命令可以查看么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
iamluda123
2012-06-08
打赏
举报
回复
[Quote=引用 11 楼 的回复:]
这个讨论没意义,COM只是规范,如果说你要判断是不是依赖Windows系统的COM组件的话,上面的看导出函数的方法是可行的,但是,如整个COM体系都是另一种实现的话,而且你不知道这种实现那就根本没有办法判断。
[/Quote]
说的完全正确.
openoffice 的COM 就无法这样判断
yyps
2011-12-06
打赏
举报
回复
regsvr32 youdll.dll 看一下注册提示,如果是普通dll 他肯定会提示找不到 注册入口。
Tishion
2011-12-03
打赏
举报
回复
这个讨论没意义,COM只是规范,如果说你要判断是不是依赖Windows系统的COM组件的话,上面的看导出函数的方法是可行的,但是,如整个COM体系都是另一种实现的话,而且你不知道这种实现那就根本没有办法判断。
zerotodream
2011-12-02
打赏
举报
回复
[Quote=引用 7 楼 wshcdr 的回复:]
这个,一般应该是告知...或者就用Depends, 如果是那特定的五个函数,
1)DllMain:Dll的入口函数,完成一些Dll的初始化工作(DirectShow实现的是DllEntryPoint);
2)DllGetClassObject:用于获得类工厂指针;
3)DllCanUnloadNow: 系统空闲时会调用这个函数,以确定是否可以卸载Dll;
4)DllRegisterSer……
[/Quote]
原来depends是看dll依赖关系的工具,不过在VS2008中被去除了,只能单独下了……
下载地址:
http://www.dependencywalker.com/depends22_x86.zip
那还有第三个问题没解决,Help~
3.如下面的dumpbin导出,name字段DllRegisterServer = _DllRegisterServer@0表示什么意思呀?普通的dll name字段就是一个符号而已……
zerotodream
2011-12-02
打赏
举报
回复
[Quote=引用 7 楼 wshcdr 的回复:]
这个,一般应该是告知...或者就用Depends, 如果是那特定的五个函数,
1)DllMain:Dll的入口函数,完成一些Dll的初始化工作(DirectShow实现的是DllEntryPoint);
2)DllGetClassObject:用于获得类工厂指针;
3)DllCanUnloadNow: 系统空闲时会调用这个函数,以确定是否可以卸载Dll;
4)DllRegisterSer……
[/Quote]
depends是什么呀?是指用dumpbin 查看导出函数么?
wshcdr
2011-12-02
打赏
举报
回复
这个,一般应该是告知...或者就用Depends, 如果是那特定的五个函数,
1)DllMain:Dll的入口函数,完成一些Dll的初始化工作(DirectShow实现的是DllEntryPoint);
2)DllGetClassObject:用于获得类工厂指针;
3)DllCanUnloadNow: 系统空闲时会调用这个函数,以确定是否可以卸载Dll;
4)DllRegisterServer:将COM组件注册到注册表中;
5)DllUnregisterServer: 删除注册表中COM组件的注册信息。
就应该是COM
zerotodream
2011-12-01
打赏
举报
回复
[Quote=引用 4 楼 zerotodream 的回复:]
引用 1 楼 mydo 的回复:
简单的方法是看导出函数名称。
1.com组件的导出函数里包含了一些特别函数如DllRegisterServer ,是不是只要包含了DllRegisterServer 的,就都是com?
2.如果普通dll也刚好实现了这些函数,那怎么办?
3.如下面的dumpbin导出,name字段DllRegisterServer = _DllRegisterServer@0表示什么意思呀?普通的dll name字段就是一个符号而已……
[/Quote]
第三点错了,我发现我写的dll,name字段是××=××格式的,但是别人的dll有些没等号的……
zerotodream
2011-12-01
打赏
举报
回复
[Quote=引用 2 楼 chengbar 的回复:]
可以尝试注册一下
[/Quote]
注册是指regsvr32 dll么?普通的dll也可以注册的吧?
zerotodream
2011-12-01
打赏
举报
回复
[Quote=引用 1 楼 mydo 的回复:]
简单的方法是看导出函数名称。
[/Quote]
1.com组件的导出函数里包含了一些特别函数如DllRegisterServer ,是不是只要包含了DllRegisterServer 的,就都是com?
2.如果普通dll也刚好实现了这些函数,那怎么办?
3.如下面的dumpbin导出,name字段DllRegisterServer = _DllRegisterServer@0表示什么意思呀?普通的dll name字段就是一个符号而已……
4 3 00001050 DllRegisterServer = _DllRegisterServer@0
firmbird
2011-12-01
打赏
举报
回复
Depends
DllGetClassObject
楼上的方法不错,可以判断DllRegisterServer有没有导出
sevancheng
2011-12-01
打赏
举报
回复
可以尝试注册一下
大熊猫侯佩
2011-12-01
打赏
举报
回复
简单的方法是看导出函数名称。
简单实现基于C++的
COM
组件
创建与
DLL
封装
本文详细介绍了C++新手如何从零开始创建
COM
组件
,并将其封装为
DLL
,包括
组件
概念、
COM
规范、
DLL
工作原理,以及动态显式调用的步骤。通过实例演示了
DLL
头文件、cpp文件的编写和
DLL
.def文件的配置,适合初学者学习
COM
技术。
关于
Dll
、
Com
组件
、托管
dll
和非托管
dll
本文详细解析了
COM
组件
与
DLL
的主要区别,包括注册方式、使用场景及与托管和非托管代码的关系。阐述了
COM
组件
的跨语言、跨平台优势及.NET时代的托管与非托管
组件
特性。
com
组件
和一般
dll
的区别
本文详细探讨了
COM
组件
模型及其与ActiveX、OLE的关系。解释了
COM
如何解决跨语言编程和分布式应用问题,并介绍了
COM
相较于
DLL
的优势。同时,文中还讨论了ActiveX的注册方法。
COM
组件
与
DLL
制作及调用示例教程
本教程聚焦Windows开发,介绍了动态链接库(
DLL
)和
COM
组件
的基础知识。涵盖
DLL
的概念、优势,
COM
组件
的跨语言和跨进程互操作性,First
Com
示例
DLL
的设计与实现,MFC类库在
DLL
调用中的使用,以及控制台程序对
DLL
的调用方法等内容,助学习者掌握其应用。
Qt调用
Com
组件
--QT调用
COM
组件
DLL
(dumpCPP工具)
本文介绍如何使用QT的QAxObject或QAxWidget操作
COM
组件
的
DLL
库,包括使用dumpcpp工具将
DLL
转换为Qt可调用的C++类的具体步骤。文中还提供了操作Excel的两个实例链接。
ATL
3,248
社区成员
48,530
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章