C#中调用C++写的com时遇到的问题与解决方案
来源:互联网 发布:网络监控机怎么使用 编辑:程序博客网 时间:2024/05/18 02:21
问题:
C++中接口定义如下:
//...
[propget, id(0), helpstring("取得用户昵称")] HRESULT NickName([out,retval] BSTR* pVal);
[propput, id(1), helpstring("设置用户昵称")] HRESULT NickName([in] BSTR newVal);
//...
C#中通过com Interop调用,取得用户昵称返回错误"未将对象引用设置到对象实例",设置用户昵称正常
问题原因(不一定对,但可以解决问题):
在"取得用户昵称"时未对*pVal分配内存
解决方法:
将"[propget, id(0), helpstring("取得用户昵称")] HRESULT NickName([out,retval] BSTR* pVal);"修改为:
[id(0), helpstring("取得用户昵称")] HRESULT GetNickName([in, out] BSTR* pVal);
Interop封装后如下调用:
//.....
String nickName = new String(new Char[25]); //用户昵称长度为25
User.GetNickName(ref nickName); //User为此Com实例化的对象,nickName中即为取得的用户昵称值
//.....
===========================
解决方法不一定好, 若有更好的解决方法请留言, 大家一起探讨
- C#中调用C++写的com时遇到的问题与解决方案
- 在C++中调用C写的函数(使用lex_yacc遇到的问题)
- VC调用C#写的COM+组件
- VC调用C#写的COM+组件
- VC调用C#写的COM组件
- C#写的com c++调用demo
- C#调用DLL时遇到的问题
- C#调用C++DLL时遇到的PInvoke 函数的调用导致堆栈不对称问题
- com c#与vc 调用的问题 参数传递
- C# 调用 C++ 写的Dll 遇到的问题(调用DLL 自动退出)
- 搭建mpi并行运算中遇到的问题与解决方案
- Storm应用中遇到的问题与解决方案
- C#与DLL和COM的混合编程(1)-C#调用C++写的非托管的DLL中导出的函数
- C#与DLL和COM的混合编程(1)-C#调用C++写的非托管的DLL中导出的函数
- swift调用object-c项目遇到的问题与解决方法
- C#中写简单的COM+组件
- 如何用ATL写一个C++的COM组件(C#轻松调用C/C++接口)
- c#调用c/c++ 动态库时遇到unsigned char * 的转换问题
- EA与Rose UML建模工具比较
- C#简单实现的远程命令程序
- 三大数据库厂商的免费数据库比较
- 程序员,建立你的商业意识——程序员为什么需要商业意识
- sqlplus & common table
- C#中调用C++写的com时遇到的问题与解决方案
- 用例建模指南
- Redhat升级至2.6.0!Vmware成功案例——说明如何配置VMware中的SCSI驱动
- Windows XP注册表信息
- 偷樑换柱 - 突破长宽MAC绑定
- 杨贵妃
- 2202内存超频稳定参数
- 魔兽争霸3冰封王座秘籍指令
- 我菜,但我很努力!