CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  ATL/ActiveX/COM

ATL编译的一个COM组件,一定要对调用方提供相关头文件吗?

楼主CoolFreezing(云翔火影)2003-08-02 15:47:28 在 VC/MFC / ATL/ActiveX/COM 提问

ATL编译的一个COM组件,一定要对调用方提供相关头文件吗?  
  有没有什么方法可以让调用方不需要那些头文件就可以使用这个组件呢?  
  就好象动态连接库那样如果有头文件和lib是一种调用方法。  
  如果没有头文件呢,直接用DLL来Loadlibrary()也是一种调用方法。  
  比如说,我现在有这个组件,但没有它的头文件,那我怎么调用这个组件里的接口呢?还请帮忙! 问题点数:20、回复次数:9Top

1 楼CoolFreezing(云翔火影)回复于 2003-08-02 16:19:07 得分 0

没有人会了吗?   大家帮忙啊!Top

2 楼skywalking(突然想起你)回复于 2003-08-02 17:11:45 得分 0

如果是写的标准com是不需要lib的,com中的接口是用标准标记语言idl描述的,在编译的时候  
   
  是以资源的形式连接到dll或exe中去了的!ms提供了一个解析器可以自动生成对应语言的头文件  
   
  就在windows的目录下,如果使用ide环境都可以通过注册信息自动生成的!  
   
  Top

3 楼CoolFreezing(云翔火影)回复于 2003-08-02 20:13:11 得分 0

迷茫ing....  
  具体点,或明确点告诉我方法,方法,方法,行吗?Top

4 楼microran2000(什么时候才能看到星星?)回复于 2003-08-02 20:20:53 得分 0

#import   "xxxx.dll"  
  using   namespace   xxxx;  
  使用编译器支持预指令即可.  
  Top

5 楼CoolFreezing(云翔火影)回复于 2003-08-02 21:59:01 得分 0

为什么编译出错?  
  我的那个组件DLL为HelloWord.dll  
   
  我按楼上所说,通过加入如下语句来实现  
  #import   "./debug/HelloWord.dll"  
  using   namespace   HelloWord;  
   
  编译器报错:  
  Compiling...  
  ClientDlg.cpp  
  F:\Temp\COM\Client\ClientDlg.cpp(11)   :   error   C2871:   'HelloWord'   :   does   not   exist   or   is   not   a   namespace  
  F:\Temp\COM\Client\ClientDlg.cpp(182)   :   error   C2065:   'IHello'   :   undeclared   identifier  
  F:\Temp\COM\Client\ClientDlg.cpp(182)   :   error   C2065:   'pIHello'   :   undeclared   identifier  
  F:\Temp\COM\Client\ClientDlg.cpp(182)   :   error   C2106:   '='   :   left   operand   must   be   l-value  
  F:\Temp\COM\Client\ClientDlg.cpp(183)   :   error   C2065:   'CLSID_Hello'   :   undeclared   identifier  
  F:\Temp\COM\Client\ClientDlg.cpp(186)   :   error   C2065:   'IID_IHello'   :   undeclared   identifier  
  F:\Temp\COM\Client\ClientDlg.cpp(191)   :   error   C2227:   left   of   '->HelloWorld'   must   point   to   class/struct/union  
  F:\Temp\COM\Client\ClientDlg.cpp(192)   :   error   C2227:   left   of   '->Release'   must   point   to   class/struct/unionTop

6 楼CoolFreezing(云翔火影)回复于 2003-08-03 10:14:23 得分 0

为什么呀?Top

7 楼lanhuaiyu(激情万岁!)回复于 2003-08-03 11:31:38 得分 20

可以不使用名字空间  
  #import   "../debug/HelloWord.dll"   no_namespace   ...  
   
  #import   "../debug/HelloWord.TLB"   no_namespace   ...  
  在导入之前需要注册组件;  
  cmd:  
  REGSVR32   "../debug/HelloWord.dll"  
   
   
   
  Top

8 楼lanhuaiyu(激情万岁!)回复于 2003-08-03 11:36:15 得分 0

对了如果你用过ADO的话,可以仿照它的方法来操作;导入类型库后可以使用只能指针;特别方便;但是记住一定要注册组件。  
  导入成功后会生成两个文件*.tlh,*.tli这两个文件里面包含组件接口的IID和一些其它信息;Top

9 楼CoolFreezing(云翔火影)回复于 2003-08-03 13:41:53 得分 0

揭贴Top

相关问题

  • 高手帮忙:ATL写的组件,VB中调用时编译出错!!
  • ATL 组件编译连接错误
  • 如何把一个Component编译成Activex 组件,然后在VC里调用?
  • 调用ATL编写的DLL是编译出错
  • 调用组件?
  • 我在win2000 Professional环境下编译的com组件(asp调用),在win98 ver2下用不了?
  • jsp 能否编译成 组件或者类(我不懂jsp,按照asp.net来问的),提供给asp.net调用?
  • 苦恼!用asp调用ATL作的组件(很简单的组件)!
  • ATL的组件在VB中调用的问题
  • 如何在ATL编写COM组件时调用ADO

关键词

  • 组件
  • 编译
  • 文件
  • cpp
  • 接口
  • client
  • dll
  • clientdlg
  • 调用
  • identifierf

得分解答快速导航

  • 帖主:CoolFreezing
  • lanhuaiyu

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo