error C4772: #import 引用了缺少的类型库中的类型;“__missing_type__”用作占位符

26 篇文章 0 订阅
11 篇文章 0 订阅

环境:cpu64,win7 64操作系统,vs2008,office2013,wps2013个人版

1.由于换了一个笔记本,xp->win7,office2010->2013,wps2012->2013,导致原来的代码不能用了

原始代码:

#import "lib/wps/2012.8.1.0.2998/kso10.dll"  rename("RGB", "KsoRGB") rename("DocumentProperties","KsoDocumentProperties")
using namespace KSO;
#import "lib/wps/2012.8.1.0.2998/wpscore.dll" auto_search auto_rename no_auto_exclude
编译后:

1>e:\kqprint_new\kqprint_new\kqprint\wpsoper.h(7) : error C4772: #import 引用了缺少的类型库中的类型;“__missing_type__”用作占位符
1>e:\kqprint_new\kqprint_new\kqprint\debug\wpscore.tlh(1931) : error C2516: “__missing_type__”: 是非法基类
1>        e:\program files (x86)\microsoft visual studio 9.0\vc\include\comdef.h(283) : 参见“__missing_type__”的声明
1>e:\kqprint_new\kqprint_new\kqprint\debug\wpscore.tlh(1931) : error C2146: 语法错误 : 缺少“,”(在标识符“ColorFormat”的前面)
1>e:\kqprint_new\kqprint_new\kqprint\debug\wpscore.tlh(1932) : error C2499: “WPS::ColorFormat”: 类不能是其自身的基类
1>e:\kqprint_new\kqprint_new\kqprint\debug\wpscore.tlh(1935) : error C2516: “__missing_type__”: 是非法基类
1>        e:\program files (x86)\microsoft visual studio 9.0\vc\include\comdef.h(283) : 参见“__missing_type__”的声明
1>e:\kqprint_new\kqprint_new\kqprint\debug\wpscore.tlh(1935) : error C2146: 语法错误 : 缺少“,”(在标识符“FillFormat”的前面)
1>e:\kqprint_new\kqprint_new\kqprint\debug\wpscore.tlh(1936) : error C2499: “WPS::FillFormat”: 类不能是其自身的基类

........

2.百度:error C2516: “__missing_type__”: 是非法基类

参考http://bbs.wps.cn/forum.php?mod=viewthread&tid=22331586,换成

#import "D:\Program Files (x86)\Kingsoft\WPS Office\9.1.0.4715\office6\ksoapi.dll"  
#import "D:\Program Files (x86)\Kingsoft\WPS Office\9.1.0.4715\office6\wpsapi.dll" rename_namespace("WPS")
编译后:

1>e:\hbj\test3\test0722\test0722\debug\wpsapi.tlh(22067) : warning C4003: “ExitWindows”宏的实参不足
1>e:\hbj\test3\test0722\test0722\debug\wpsapi.tlh(22067) : error C2059: 语法错误 : “常量”
1>e:\hbj\test3\test0722\test0722\debug\wpsapi.tlh(29762) : error C2146: 语法错误 : 缺少“;”(在标识符“VBE”的前面)
1>e:\hbj\test3\test0722\test0722\debug\wpsapi.tlh(29762) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\hbj\test3\test0722\test0722\debug\wpsapi.tlh(29762) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\hbj\test3\test0722\test0722\debug\wpsapi.tlh(29979) : error C2146: 语法错误 : 缺少“;”(在标识符“GetVBE”的前面)
1>e:\hbj\test3\test0722\test0722\debug\wpsapi.tlh(29979) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\hbj\test3\test0722\test0722\debug\wpsapi.tlh(29979) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\hbj\test3\test0722\test0722\debug\wpsapi.tlh(29979) : warning C4183: “GetVBE”: 缺少返回类型;假定为返回“int”的成员函数
........

3.百度,google:warning C4003: “ExitWindows”宏的实参不足

参考:http://bbs.csdn.net/topics/300159601

但是wps2013没有VBE6EXT.OLB,用vbeapi.dll代替

改成:

#import "D:\Program Files (x86)\Kingsoft\WPS Office\9.1.0.4715\office6\vbeapi.dll"
#import "D:\Program Files (x86)\Kingsoft\WPS Office\9.1.0.4715\office6\ksoapi.dll"  
#import "D:\Program Files (x86)\Kingsoft\WPS Office\9.1.0.4715\office6\wpsapi.dll" rename_namespace("WPS")
编译后:

1>e:\hbj\test3\test0722\test0722\debug\vbeapi.tlh(632) : error C2146: 语法错误 : 缺少“;”(在标识符“CommandBars”的前面)
1>e:\hbj\test3\test0722\test0722\debug\vbeapi.tlh(632) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\hbj\test3\test0722\test0722\debug\vbeapi.tlh(632) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\hbj\test3\test0722\test0722\debug\vbeapi.tlh(653) : error C2146: 语法错误 : 缺少“;”(在标识符“GetCommandBars”的前面)
1>e:\hbj\test3\test0722\test0722\debug\vbeapi.tlh(653) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\hbj\test3\test0722\test0722\debug\vbeapi.tlh(653) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\hbj\test3\test0722\test0722\debug\vbeapi.tlh(653) : warning C4183: “GetCommandBars”: 缺少返回类型;假定为返回“int”的成员函数
1>e:\hbj\test3\test0722\test0722\debug\vbeapi.tli(244) : error C2143: 语法错误 : 缺少“;”(在“VBE::VBE::GetCommandBars”的前面)
1>e:\hbj\test3\test0722\test0722\debug\vbeapi.tli(244) : error C2433: “_CommandBarsPtr”: 不允许在数据声明中使用“inline”
1>e:\hbj\test3\test0722\test0722\debug\vbeapi.tli(244) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\hbj\test3\test0722\test0722\debug\vbeapi.tli(244) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

.....

4.继续google:缺少“;”(在标识符“CommandBars”的前面)

但是没有什么结果了,于是心灰意冷,直接用

#import "D:\Program Files (x86)\Kingsoft\WPS Office\9.1.0.4715\office6\wpsapi.dll" auto_search auto_rename no_auto_exclude
结果编译通过

百度auto_search用法,

http://msdn.microsoft.com/zh-cn/subscriptions/downloads/0346ezww%28v=vs.90%29.aspx

http://technet.microsoft.com/zh-cn/library/298h7faa

auto_search 指定当使用 #import 引用了类型库,并且它本身引用了另一个类型库时,编译器可以为其他类型库执行隐式 #import。 

原来造成上边的原因是wpsapi.dll引用了其他类库

// Cross-referenced type libraries:
//
//  #import "D:\Program Files (x86)\Kingsoft\WPS Office\9.1.0.4715\office6\ksoapi.dll"
//  #import "C:\Program Files (x86)\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"

则另一种代码也可以编译通过:

#import "D:\Program Files (x86)\Kingsoft\WPS Office\9.1.0.4715\office6\ksoapi.dll"
#import "C:\Program Files (x86)\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
#import "D:\Program Files (x86)\Kingsoft\WPS Office\9.1.0.4715\office6\wpsapi.dll"/* auto_search,*/rename("ExitWindows","_ExitWindows")

总结:引用的类库可以通过wpsapi.thi文件查看,而auto_search居然可以自动查找类库,否则你就得自己指定了


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,报错信息"error": "invalid_request", "error_description": "Missing grant type"是由于请求中缺少了grant type参数导致的\[1\]。在接口中,grant type参数是必需的,用于指定授权类型。在请求中添加grant type参数即可解决该错误。 另外,根据引用\[2\]中的接口定义,该接口是一个授权接口,需要用户登录。请求中需要包含response_type、client_id、redirect_uri、scope等参数。其中,response_type参数需要设置为"code",client_id参数需要设置为客户端的ID,redirect_uri参数需要设置为重定向的URI,scope参数需要设置为授权的范围。state参数是可选的,用于传递额外的状态信息。 最后,根据引用\[3\]中的内容,OAuth 2.0是一种用于授权的开放标准,可以用于实现第三方登录等功能。在开发开放平台时,需要选择适合的技术和选型方案。 综上所述,解决"error": "invalid_request", "error_description": "Missing grant type"错误的方法是在请求中添加grant type参数,并确保请求中包含了接口所需的其他参数。 #### 引用[.reference_title] - *1* [python post请求报错:{“error“:“invalid_request“,“error_description“:“Missing grant type“}](https://blog.csdn.net/qq_44667896/article/details/120043359)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [开放平台设计选型&代码编写](https://blog.csdn.net/qq_39905910/article/details/104749096)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值