社区
ATL
帖子详情
拿到dll,如何判断是com组件还是普通的dll?
zerotodream
2011-12-01 02:37:37
如题,拿到一个dll,但是不知道是com组件还是普通的dll。
用dumpbin也没显示什么具体信息。
有什么命令可以查看么?
...全文
1097
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
打赏
举报
回复
简单的方法是看导出函数名称。
com
组件
和一般
dll
的区别
这阵子在想一个需要利用
com
组件
的小程序怎么做,突然想起上次去面试的时候考官问过autocad开发时为什么要利用
com
,而不采用一般的
dll
呢? 到google上查了一下,许多人也问了一样的问题:) 用
com
来写程序要比
普通
的
dll
麻烦一些,但是带来的好处也大很多,尤其是在开发像autocad这样大型软件的时候,需要跨区域来协同工作。 “学习
COM
,首先要知道
COM
的目的
COM
组件
和
DLL
的区别
这阵子在想一个需要利用
com
组件
的小程序怎么做,突然想起上次去面试的时候考官问过autocad开发时为什么要利用
com
,而不采用一般的
dll
呢? 到google上查了一下,许多人也问了一样的问题:) 用
com
来写程序要比
普通
的
dll
麻烦一些,但是带来的好处也大很多,尤其是在开发像autocad这样大型软件的时候,需要跨区域来协同工作。 “学习
COM
,首先要知道
COM
的目的是什么,它
.net 的
dll
转化为
Com
组件
在搞企业信息化的过程中遇到这样一个问题:很多新的应用模块使用.net进行了开发,收到了很好的效果,但是有很多过去的程序,使用的是VB6开发的,也就是需要使用
COM
组件
,因为不是小部分的,而且很多是影响主业务的程序,所以就想到了把.net的类库,建立
Com
类的方式先进性封装,然后再编译成
dll
,客户端如何使用呢?这个问题困扰了我好几天1、问题的发现:在本机上使用通过编译的
COM
组件
,没有问题
Java调用
dll
Java调用
COM
组件
1、JNative JNative调用
dll
很方便,只是需要
dll
有导出函数,否则调不到。就是说要调用的方法必须是导出函数。如果不知道你的
dll
有没有这个导出函数,可下载这个软件查看——
DLL
函数查看器。 下载JNative开源项目(百度之),解压开,
拿到
三个文件,分别是:JNativeCpp.
dll
,libJNativeCpp.so,JNative.jar 。 ——JNativeCpp.
如何把
DLL
封装为
COM
组件
供C++程序调用
需要将C#部分的接口提取出来,导出到
COM
,然后C++通过
COM
来调用它。 using System; using System.Runtime.InteropServices; namespace ClassLibrary1 { [
Com
Visible(true)] [Guid(“F3528A0F-D34F-4A5B-9849-0DCAD6212D5A”)] public interface M...
ATL
3,248
社区成员
48,529
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章