1 DLL是否可以跨语言?
可以. VB可以调用使用vc编译的DLL中的函数.
但是具体方法我还不知道.
2 ActiveX控件与ATL. COM之间的关系:
3 理解COM与DLL之间的关系.
可以这样理解: DLL是一个动态链接库. COM则是一种特殊的制作DLL的方法.
比如说, DLL是一部手机, 我们可以做出很多的手机, 它们都能够用来打电话, 但是有一些问题,比如说不同种类的手机, 它们的充电器接口不一样,不能通用. 这点很不方便, 如果我们规定, 所有的手机厂商都必须按照同样的一个标准(比如说直径必须都是5毫米)来生产手机, 那这种规则就叫做COM. 有时候为了方便, 我们把利用COM规则制作出来的特殊DLL简称为COM. (这也是为什么一直以来COM难以理解的原因)
那种这个规则是什么呢?
4 .tlb是一个很重要的文件.
应该学会使用它. 在只有.tlb存在的情况下,我们似乎也可以通过#import **.tlb的方法使用其中的接口...
似乎还可以使用ole view生成.tlb.
5 EXE如何使用DLL中的COM接口?
在制作COM时, 会生成.H .C .TLB .DLL ALLDATA.C ALLDATA_P.C
一: EXE可以包含.H .C, 然后调用COM库函数就可以使用相应的接口了.
DLL中的COM组件需要使用regsvr32来注册.
二: 不包含.H .C也行, 但是要有.TLB
调用#import "........tlb", 以预编译时会生成.tlh和.tli文件. .tlh文件是类接口定义. .tli是接口的GUID定义(但是还是提示编译不通过,不知道为什么,难道必须包含DLL提供的.C?)
三: 也可以只包含.DLL.
同上一个一样,也用#import命令, #import "........DLL", 也会生成.tlh和.tli文件. 其实这个是因为我们在制作DLL时把.TLB包含进DLL中了(方法如下).
(也可以IMPORT exe)
TypeLib实际上是作为资源放在dll中的。
Step 1: Compile the IDL file using MIDL.exe and get the .tlb file
Step 2: In VC++6 IDE, WorkSpace-> Resource View, View -> Resource Includes, and then you get the resource includes dialog:
In the "Compile-time directives " column, please enter something in the following format:
1 TYPELIB "MyTypeLib.tlb "
Step 3: Compile your DLL and the .tlb file now is packaged with your dll.
- 微软亚洲技术中心 VC技术支持
本贴子仅供CSDN的用户作为参考信息使用。其内容不具备任何法律保障。您需要考虑到并承担使用此信息可能带来的风险。具体事项可参见使用条款 ( http://www.csdn.net/microsoft/terms.shtm)。