怎样区分DLL和COM,我现在有一个后缀为.DLL的文件。但是我不知道这是个DLL还是COM
请问怎么区分出来
谢谢
请问怎么区分出来
谢谢
解决方案 »
- 有关于richedit
- 调用COM+组件第一次成功,第二次失败,是什么原因?
- CreateProcessWithLogonW -> RunAs或Secondary Logon时,用户名被修改的问题
- vc里怎么得到手形光标?
- 用_beginthreadex这个函数需要做什么设置?
- 如何取消MDI中各窗口的滚动条?
- 追女孩也要编程序!!!
- 怎样在Edit控件输入汉字时敲回车键或是在设定的长度自动换行?
- GetFirstViewPosition()
- 怎么将下载的文件放入内存而不存盘?
- 如何调整控件的tab顺序?
- 请教:用VC6将DSP文件导出makefile文件,可以用 cmd命令行来实现吗?如何做 谢谢?找了MSDN帮助 未果。
regsvr32 a.dll若出现“a.dll中的DllRegisterServer成功”的对话框,则说明肯定是个COM如果失败,则有一定可能性为COM,继续判断的方式很多(比如用dumpbin查看导出函数表,如果存在这么几个函数:DllCanUnloadNow,DllGetClassObject,那基本上可以肯定就是个COM)如果这个dll文件是某个需要安装的应用程序的组成部分,那么还可以到注册表中查找这个dll是否被注册,查找关键字是该dll所在位置的全路径
导出了DllRegisterServer(),DllUnregisterServer()函数的是COM
没有导出的是DLL
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer
但是现在我看了一下注册表下面有这个注册相
但是在DEPENDS中却看不到以下这四个函数
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer晕了
盼各位积蓄解答
dumpbin -exports 你的dll.dll的结果贴出来,帮你看
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
Dump of file C:\Mytest.dllFile Type: DLL Section contains the following exports for Mytest.dll 0 characteristics
42FB0912 time date stamp Thu Aug 11 16:15:14 2005
0.00 version
1 ordinal base
9 number of functions
0 number of names ordinal hint RVA name 1 000059B0 [NONAME]
2 000057F0 [NONAME]
3 000056C0 [NONAME]
4 00005730 [NONAME]
5 0000B6D0 [NONAME]
6 00005610 [NONAME]
7 00005650 [NONAME]
8 00005690 [NONAME]
9 000056A0 [NONAME] Summary 6000 .data
6000 .rdata
2000 .reloc
1000 .rsrc
1B000 .text
1 (0x0001)
2 (0x0002)
3 (0x0003)
4 (0x0004)
5 (0x0005)
6 (0x0006)
7 (0x0007)
8 (0x0008)
9 (0x0009)
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer
那个名字就是NONAME
这个DLL是以前我写的
但是后来辞职了
今天偶尔看了以下新的版本
竟给弄成了这个样子不知道怎么搞得
已经说的这么清楚了
com是一种概念,dll是一种文件格式,两个没有可比性
以下这些概念是 COM 的基础: 接口 — 对象用来公开其功能的机制。
IUnknown — 作为所有其他接口之基础的基本接口。它通过 COM 实现对引用计数和接口查询机制的运行。
引用计数 — 对象(严格地说是接口)用来决定它何时不再被使用并因此可以自由地移除自身的技术。
QueryInterface — 用于查询对象的给定接口的方法。
封送处理 — 使对象能够跨越线程、进程和网络边界使用并允许其具有位置独立性的机制。
聚合 — 一种使一个对象可以利用其他对象的方法。
假设其Dll文件名称为 xx.dll
在程序中书写如下代码
#import "xx.dll"
编译此程序,查看其输出目录中是否含有 xx.tlh 的文件。如果发现此文件,就说明此Dll含有类型库信息,从而确定其是 Com