• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 刚刚接触VC写COM+,但不知为什么,变量BSTR老是传不进去。

刚刚接触VC写COM+,但不知为什么,变量BSTR老是传不进去。

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了vc bstr,bstr,bstr t,bstr是什么类型,bstr转cstring等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 刚刚接触VC写COM+,但不知为什么,变量BSTR老是传不进去。
描述:

我用VC+ALT写了一个简单的COM+,其中有一个方法是
STDMETHODIMP CProcess::Test(BSTR inStr, LONG* Result)
{
// TODO: 在此添加实现代码
*Result = wcslen(inStr);
return S_OK;
}
只是计算传入的字符串的长度
可是我在用调用程序中却无法将inStr传进去,得到的返回值总是0
{
  BSTR fp1=L"48EF";
  long len = CProcess1->Test(fp1);
  ShowMessage(StrToInt(len));
}
第一次写COM+,请大家指教!


解决方案1:

有[out,retval]参数的函数在vb中只需要用一个参数,返回值就是这个参数,而vc中要写两个参数,就相当于没有写retval一样的
如果不相拥SysAllocString分配和回收,可以用_bstr_t封装类
_bstr_t bstr(L"48EF");
_bstr_t bstr("48EF");
都可以

解决方案2:

BSTR必须要调用SysAllocString分配空间
BSTR fp1=L"48EF";//错误
BSTR fp1=SysAllocString(L"48EF");//正确
....
SysFreeString(fp1);//用完回收

解决方案3:

很明显入口参数不对嘛!
BSTR也可以又CString 得到啊
CString s;
BSTR b=s.SysAllocString();


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • vc里面的long或者int如何转换成BSTR
  • VC中BSTR类型参数在PB中调用的问题
  • vc做ACtiveX参数的返回用LPCTSTR,还是BSTR?
  • VC传递BSTR给COM,COM传递BSTR给VC
  • 如何在VC中实现BSTR与CString之间的转换?求助!
  • 刚刚接触VC写COM+,但不知为什么,变量BSTR老是传不进去。

相关文章

  • 2017-06-05 向高手请教,windows核心编程的例五使用GetWindowLongPtr我包含了windowsh为何编译仍提示为undeclareidentifier
  • 2017-06-05 怎么在多线程中使用同一插槽发送和接受数据
  • 2017-06-04 什么是Tear-Offs?
  • 2017-06-05 请问用鼠标点击一个exe文件和在另一个进程中用CreateProcess启动该进程有何区别?
  • 2017-06-04 下载了Atl开发指南的例子,编译成功,注册时出现非法操作?
  • 2017-06-04 ocx在IE中的消息传递是怎么回事?
  • 2017-06-05 怎么让多个组件共用一个结构体
  • 2017-06-05 任务栏通知区图标在explorerexe进程崩溃并自动重启后,如何随之再出现?
  • 2017-06-04 还是有关生成word文档的问题
  • 2017-06-05 可以知道系统当前其它进程的窗口句柄,怎样获得其执行文件的路径?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 我要定义一个线程,使用定时器,在MFC中应该怎么写?
    • “某某程序遇到问题需要重启,表示歉意,请填写问题描述,发送”,这个是怎么做的?
    • 如何异步调用远程组件的方法?
    • 关于MFCActiveX编译选项USEMFCinstaticlibrary
    • 向ActiveX控件传递数组指针时出现的奇怪问题,求解。
    • 请问在vc中如何通过程序在word文当中插入表格,以及在表格的特定位置中写入字符
    • COM中,怎样通过参数返回一个字符串啊?
    • 用VC生成的EXE文件,在别的没有装VC的机器上就不能运行,可能要用到VC的一些资源吧,那如何才能生成可以不用那些资源的EXE文件呢!?
    • 有在多线程中使用Multicast的吗?有Sample吗?
    • 想请教一个封装的问题把窗体封装在DLL里

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有