2

有人可以解释一下 raw_interfaces_only 实际上做了什么吗?

例如,

#import <xyz.dll> raw_interfaces_only 

我无法理解msdn 站点中提供的单行解释。

4

2 回答 2

4

MSDN 说

禁止生成错误处理包装函数和使用这些包装函数的属性 (C++) 声明。

raw_interfaces_only 属性还会导致删除用于命名非属性函数的默认前缀。通常,前缀是 raw_。如果指定了此属性,则函数名称直接来自类型库。

此属性允许您仅公开类型库的低级内容。

您还可以使用和不使用此属性进行构建,并比较生成.tlh的文件以查看差异:

#import <imapi2.dll> // --> imapi2-without.tlh
#import <imapi2.dll> raw_interfaces_only // --> imapi2-with.tlh

在此处输入图像描述

raw_interfaces_only属性导致生成较少的包装器代码。

于 2012-08-09T10:04:16.230 回答
0

好吧,看看谷歌的第一个结果,惰性链接,它似乎是一个“属性”

形成该页面:

#import  "filename" [attributes]
#import  <filename> [attributes]

然后我们可以自己阅读raw_interfaces_only属性的作用:

raw_interfaces_only 属性禁止生成错误处理包装函数和使用这些包装函数的 __declspec(property) 声明。

这听起来像是一个简单的案例,它有助于减少导入库带来的混乱,减少包装代码和为您完成的错误检查。

于 2012-08-09T10:06:46.650 回答