VC 调用C#写的COM组件注意事项
2013-10-23 14:53
218 查看
1、COM组件必须使用强名称,可以
(1)方法一:在VS命令行下用sn工具生成(用法 sn -k xxxx.snk),在AssemblyInfo.cs中添加
[assembly: AssemblyKeyFileAttribute("HtmlHelper4cpp.snk")]
[assembly: AssemblyKeyName("HtmlHelper4cpp.snk")]
(2)方法二:选中工程——(右键)属性——签名,生成
2、工程——右键属性——生成,选中“为COM互操作注册”;
工程——右键属性——应用程序——程序集信息,选中“使程序集COM可见”
3、生成目标平台应选x86,而非Any Cpu(本人解决方案和工程属性都修改了)。
否则在调用时会出现“0x80040154 没有注册类”的异常
4、VS命令行下使用regasm /tlb:xxxx.tlb xxxx.dll 注册,使用gacutil /i xxxx.dll加入全局缓存。
5、VC调用,通过#import "..\xxxx.tlb"引入库
使用前需CoInitialize(NULL); 和CoUninitialize();
假设命名空间为namespace1, 指针为ITest,实现类为TestService,则调用方式为
namespace1::ITestPtr pTest(__uuidof(namespace1::TestService)); 然后通过pTest调用相关方法
(1)方法一:在VS命令行下用sn工具生成(用法 sn -k xxxx.snk),在AssemblyInfo.cs中添加
[assembly: AssemblyKeyFileAttribute("HtmlHelper4cpp.snk")]
[assembly: AssemblyKeyName("HtmlHelper4cpp.snk")]
(2)方法二:选中工程——(右键)属性——签名,生成
2、工程——右键属性——生成,选中“为COM互操作注册”;
工程——右键属性——应用程序——程序集信息,选中“使程序集COM可见”
3、生成目标平台应选x86,而非Any Cpu(本人解决方案和工程属性都修改了)。
否则在调用时会出现“0x80040154 没有注册类”的异常
4、VS命令行下使用regasm /tlb:xxxx.tlb xxxx.dll 注册,使用gacutil /i xxxx.dll加入全局缓存。
5、VC调用,通过#import "..\xxxx.tlb"引入库
使用前需CoInitialize(NULL); 和CoUninitialize();
假设命名空间为namespace1, 指针为ITest,实现类为TestService,则调用方式为
namespace1::ITestPtr pTest(__uuidof(namespace1::TestService)); 然后通过pTest调用相关方法
相关文章推荐
- VC中程序调用Js自定义函数的注意事项
- vc++.net 移植到 C#中的几点注意事项
- C#调用Oracle存储过程注意事项
- VC调用C#的COM组件(DLL)
- C#调用C库的注意事项
- ajaxpro调用C#代码需要注意的事项(1)
- VC++调用Web Service的方法及注意事项
- VC++调用Web Service的方法及注意事项
- VC调用C#的COM组件(DLL)笔记
- C# winfrom 窗体调用 WPF 窗体注意的事项
- (学习笔记)C++编写dll C#调用注意事项
- 字段内存C#调用C++DLL注意事项
- C#调用C++函数的注意事项
- C#调用Matlab引擎详细方法以及注意事项
- C#调用C库的注意事项
- VC中程序调用Js自定义函数的注意事项
- C#调用C库的注意事项
- VC调用C#写的COM组件
- ajaxpro调用C#代码需要注意的事项(2)
- C#创建VC可调用的COM组件