*.tlb和*.h+*_i.c有什么不同?

葛俊在新泽西 2004-01-15 05:19:41
请问使用import "*.tlb"和
#include "*.h"
#include "*_i.c"
有什么不同?
...全文
134 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yintongshun 2004-01-17
  • 打赏
  • 举报
回复
不好意思,来晚了,楼上的给做了解释了
zylstudy 2004-01-16
  • 打赏
  • 举报
回复
c2247
“identifier”不可访问,因为“class”使用“specifier”从“class”继承

标识符是从用私有或受保护访问权声明的类继承的。

示例

// C2247.cpp
class A
{
public:
int i;
};
class B : private A {}; // B inherits a private A
class C : public B {} c; // so even though C's B is public
int j = c.i; // C2247, i not accessible
brave_heart 2004-01-16
  • 打赏
  • 举报
回复
>>> to yintongshun(踏雪有痕) :
>>> >我感觉就是个环境有没有必要的问题,比如在别的非GUI下,用import "*.tlb"就可能不行了

>>> 能说具体点吗?谢谢

只有微软的VC认识#import,其他的C++编译器厂商,比如Borland,他就不支持这句代码
import "*.tlb"。
而#include "*.h" #include "*_i.c" 就没有这个问题了,只要是标准C++编译器,都没有问题。
葛俊在新泽西 2004-01-15
  • 打赏
  • 举报
回复
很奇怪,在我的一个项目中,如果用#import "*.tlb"的话,下面的语句就会报错。

IObject->Release();
错误号是:C2247
葛俊在新泽西 2004-01-15
  • 打赏
  • 举报
回复
to yintongshun(踏雪有痕) :
>我感觉就是个环境有没有必要的问题,比如在别的非GUI下,用import "*.tlb"就可能不行了

能说具体点吗?谢谢。
fzd999 2004-01-15
  • 打赏
  • 举报
回复
来迟一步~郁闷中
yintongshun 2004-01-15
  • 打赏
  • 举报
回复
TLB:OLE库文件,其中存放了OLE自动化对象的数据类型、模块和接口定义,自动化服务器通过TLB文件就能了解自动化对象的使用方法。tlb为编译后生成的类型库文件,同时生成接口定义头文件*.h,以及接口、类型库等的GUID定义文件*_i.c。
比如用MIDL编译宏。VC一般使用midl.exe程序编译*.idl文件,以产生类型库文件、C/C++格式的接口定义文件和GUID定义文件等。方法如下,例:以“文本”方式打开Filter的项目文件(ball.dsp),找到ball.idl项,然后在下面增加“#ADD…”一行,参考如下:
# Begin Source File

SOURCE=.\ball.idl
# ADD MTL /tlb ".\ball.tlb" /h "iball.h" /iid "ball_i.c" /Oicf
# End Source File

我感觉就是个环境有没有必要的问题,比如在别的非GUI下,用import "*.tlb"就可能不行了
一般来说VC中用import "*.tlb"就可以了,可以到.h里面看相关函数声明等

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧