导航
  • 主页
  • VC综合技术
  • MFC新技术
  • 互联网技术
  • .NET 技术
  • VC/MFC界面
  • VC/MFC 进程
  • VC/MFC 数据库
  • VC++技术资源

绝世easy问题,不来抢分别后悔哦!

holy_cyt 2002-07-23 08:48:20
com中要在客户端应用服务器端定义的接口ID,有三种方法(不知我说的对不对)
1.#import "xxx.idl"

2.#import "xxx.tlb" named_guid

3.#include "xxx.h"
#include "xxx_i.c"

这三种方法的区别是什么,各在什么场合下用?
盼望高手给予充分详尽的说明!!!
分不够可以再加!!!!!!!!!!!!!!
...全文
3 点赞 收藏 13
写回复
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
FFXI 2002-07-23
其实本质上是一样的。
有了IDL文件,可用midl编译得到TLB和 .H 和 .C。

而#import "xxx.tlb" (也可以是带有类库信息Dll,ocx,exe)
VC会自动生成 xxx.tlh(Head) 和 xxx.tli.(Implementation & definitions), 将其加入项目编译。

回复
sun9989 2002-07-23
up
回复
_liang_ 2002-07-23
记住了,呵呵!
回复
zxydg 2002-07-23
我用第一种
回复
holy_cyt 2002-07-23
我发现的问题是:
用第三种方法时,若客户端引用的是 &IID(接口GUID的地址)。
就编译不通过,而用第二种方法就可以。何解???????

偏偏ATL中的好多class都要求 &IID 模版参数:(
回复
rokia 2002-07-23
我也關注! 
COM 這東西,不用幾次是永遠也記不住的。
回复
xiaohyy 2002-07-23
我在使用ADO时是用的第2种,还有一种就是 mfkzj() 所说的#define。。。不过那个东西更。。。。
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")

下面是vc知识库中对该语句的说明:
这一语句有何作用呢?其最终作用同我们熟悉的#include类似,编译的时候系统会
为我们生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库。

几点说明:
(1) 您的环境中msado15.dll不一定在这个目录下,请按实际情况修改
(2) 在编译的时候肯能会出现如下警告,对此微软在MSDN中作了说明,并建议我们不要理会这个警告。
msado15.tlh(405) : warning C4146: unary minus operator applied to unsigned type, result still unsigned

回复
tangss 2002-07-23
UP
回复
mfkzj 2002-07-23
说的没错 还有一种就是直接定义ID
#define..........
场合主要看你拥有的是哪种资源 有没有定义文件
回复
chenybin 2002-07-23
我只用过第3种方法
惭愧惭愧
回复
doublesword 2002-07-23
gz
回复
chenybin 2002-07-23
up
回复
holy_cyt 2002-07-23
up
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……