[开发笔记]-“在引用COM组件时,出现了无法嵌入互操作类型。。。”的错误
2014-07-11 17:14
316 查看
这两天在做一个需要将wps文档转换成word文档的程序,在调用wps的com组件时项目编译是没有问题的,但当运行的时候却弹出了下面的错误提示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/29/acd858894ef4bbb2deba401b7c554576.jpg)
从网上百度一番后,找到了正确的解决方法。
先从Com组件中添加引用:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/29/83d350d3de37d7c5cb79311642383548.jpg)
选中引入的Com组件库,右键-> 属性:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/29/b0192f9513e91370d6089e154580a720.jpg)
将“嵌入互操作类型”改为 False 选项:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/29/322c86f48b8a402338c4b6c102507c41.jpg)
重新编译,程序正常运行。
由此,让我联想到了在前不久一个朋友在使用Office组件用来转换pdf文档时,出现的 “无法嵌入互操作类型。。。”的问题,记得当时他的处理方法是按照网上说的教程,设置程序获取最高的管理员权限,添加允许等操作来解决的,虽说最终程序是可以运行了,但配置起来还真是相当的麻烦呢。
而正确的方法应该是这样的。调用Office文档时:(以下图片来源于网络)
导入Com组件中的Office库:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/29/49a19064d00199c6637858d54db4b1c1.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/29/f3adf3a52966b71a2b3128f8431d671e.png)
直接运行会报错,“无法嵌入互操作类型”等等之类的错误:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/29/4032edfb825cee2016f48bdf6ca19daf.png)
打开 “属性” 对话框:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/29/d26ea6b723bd54a011ba5a73de496e5a.png)
将 “嵌入互操作类型” 设置为 False:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/29/43777a042f38e4939d65e5081dfd364b.png)
何为 “嵌入互操作类型” ???
1. ”嵌入互操作类型”中的嵌入就是引进、导入的意思,类似于c#中using,c中include的作用,目的是告诉编译器是否要把互操作类型引入。
2. “互操作类型”实际是指一系列Com组件的程序集,是公共运行库中库文件,类似于编译好的类,接口等。
3. “嵌入互操作类型”设定为true,实际上就是不引入互操作集(编译时候放弃Com程序集),仅编译用户代码的程序集。而设定为false的话,实际就是需要从互操作程序集中获取 COM 类型的类型信息。
参考:VS2010中出现无法嵌入互操作类型
转载请注明出处。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/29/acd858894ef4bbb2deba401b7c554576.jpg)
从网上百度一番后,找到了正确的解决方法。
先从Com组件中添加引用:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/29/83d350d3de37d7c5cb79311642383548.jpg)
选中引入的Com组件库,右键-> 属性:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/29/b0192f9513e91370d6089e154580a720.jpg)
将“嵌入互操作类型”改为 False 选项:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/29/322c86f48b8a402338c4b6c102507c41.jpg)
重新编译,程序正常运行。
由此,让我联想到了在前不久一个朋友在使用Office组件用来转换pdf文档时,出现的 “无法嵌入互操作类型。。。”的问题,记得当时他的处理方法是按照网上说的教程,设置程序获取最高的管理员权限,添加允许等操作来解决的,虽说最终程序是可以运行了,但配置起来还真是相当的麻烦呢。
而正确的方法应该是这样的。调用Office文档时:(以下图片来源于网络)
导入Com组件中的Office库:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/29/49a19064d00199c6637858d54db4b1c1.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/29/f3adf3a52966b71a2b3128f8431d671e.png)
直接运行会报错,“无法嵌入互操作类型”等等之类的错误:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/29/4032edfb825cee2016f48bdf6ca19daf.png)
打开 “属性” 对话框:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/29/d26ea6b723bd54a011ba5a73de496e5a.png)
将 “嵌入互操作类型” 设置为 False:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/29/43777a042f38e4939d65e5081dfd364b.png)
何为 “嵌入互操作类型” ???
1. ”嵌入互操作类型”中的嵌入就是引进、导入的意思,类似于c#中using,c中include的作用,目的是告诉编译器是否要把互操作类型引入。
2. “互操作类型”实际是指一系列Com组件的程序集,是公共运行库中库文件,类似于编译好的类,接口等。
3. “嵌入互操作类型”设定为true,实际上就是不引入互操作集(编译时候放弃Com程序集),仅编译用户代码的程序集。而设定为false的话,实际就是需要从互操作程序集中获取 COM 类型的类型信息。
参考:VS2010中出现无法嵌入互操作类型
转载请注明出处。
相关文章推荐
- “在引用COM组件时,出现了无法嵌入互操作类型。。。”的错误
- 【组件】“在引用COM组件时,出现无法嵌入互操作类型……”的错误
- VS 错误:出现无法嵌入互操作类型
- Visual Studio 引用 COM程序集,导致错误 :无法嵌入互操作类型“XXXX”
- AE中出现无法嵌入互操作类型错误
- ArcEngine10.1二次开发错误: 无法嵌入互操作类型,请改用适用的接口
- VS2010中出现无法嵌入互操作类型
- VS2010中出现无法嵌入互操作类型
- (转)VS2010中出现无法嵌入互操作类型
- 无法嵌入互操作类型错误处理
- C#引用COM对象,报错:《类型 *** 未定义构造函数, 无法嵌入互操作类型 *** 。请改用适用的接口》的解决办法。
- 错误 1 无法嵌入互操作类型“Microsoft.Office.Interop.Excel.ApplicationClass”。请改用适用的接口
- VS2010中出现无法嵌入互操作类型
- 创建了对嵌入的互操作程序集间接引用,无法嵌入互操作类型
- 类型“Microsoft.Office.Interop.Word.ApplicationClass”错误 4317 无法嵌入互操作类型
- VS2010中出现无法嵌入互操作类型
- VS2010中出现无法嵌入互操作类型
- [置顶] VS2010中出现无法嵌入互操作类型
- C#无法嵌入互操作类型XXX.XXX请查看是否缺少引用集解决方法
- VS2010中出现无法嵌入互操作类型