社区
ATL
帖子详情
拿到dll,如何判断是com组件还是普通的dll?
zerotodream
2011-12-01 02:37:37
如题,拿到一个dll,但是不知道是com组件还是普通的dll。
用dumpbin也没显示什么具体信息。
有什么命令可以查看么?
...全文
1266
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
、
COM
组件
、
DLL
等基本概念与关系,使用C++进行
COM
组件
创建与
DLL
封装调用等的简单实现。
关于
Dll
、
Com
组件
、托管
dll
和非托管
dll
Com
组件
和
dll
区别: 1.
普通
dll
不能通过regsvr32.exe来注册,而
Com
组件
能通过regsvr32.exe注册。 2.
Com
组件
是微软的一个协议,满足
com
组件
协议的
dll
文件就是
com
组件
,这种协议为了跨语言、跨平台使用,
dll
组件
需要编译后使用,而
Com
组件
注册后即可使用。 而
dll
是动态链接库,是一个可以导出函数的集合。 3.
Com
组件
可以是exe也可以是
dll
文件。 托管
dll
/
Com
组件
和非托管
dll
/
Com
组件
: 1.非托管
Com
组件
是用非运行库代码编写的,如C++,
com
组件
和一般
dll
的区别
这阵子在想一个需要利用
com
组件
的小程序怎么做,突然想起上次去面试的时候考官问过autocad开发时为什么要利用
com
,而不采用一般的
dll
呢? 到google上查了一下,许多人也问了一样的问题:) 用
com
来写程序要比
普通
的
dll
麻烦一些,但是带来的好处也大很多,尤其是在开发像autocad这样大型软件的时候,需要跨区域来协同工作。 “学习
COM
,首先要知道
COM
的目的
COM
组件
与
DLL
制作及调用示例教程
本文还有配套的精品资源,点击获取 简介:在Windows开发中,
DLL
是用于共享代码和资源的
组件
,而
COM
技术则提供了一种实现跨语言
组件
互操作性的标准。本教程将介绍
DLL
和
COM
组件
的基础知识,包括如何创建和使用
DLL
,特别是通过
COM
接口的实例。教程内容包括First
Com
示例
DLL
的创建、MFC类库在
DLL
调用中的应用,以及控制台程序对
DLL
的调用方式。通过实例源码的分...
Qt调用
Com
组件
--QT调用
COM
组件
DLL
(dumpCPP工具)
近期项目使用
COM
组件
生成的
DLL
库,我采用QT自带
Com
组件
操作类调用
DLL
中函数接口;QT自带
com
组件
操作类库,QAxObject或QAxWidget即可操作以
COM
为
组件
的
DLL
库,网上有许多例子采用这两个类操作EXCEL,在此我不做详述,在QT中还可以使用QT类库创建
COM
组件
供Windows中C#调用;在此我想说QT是真强大。 这里附两个例子操作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写文章