bstr相关内容
我正在尝试将 wchar_t * 转换为 BSTR. #include #include 使用命名空间标准;主函数(){wchar_t* pwsz = L"foo";BSTR bstr(pwsz);cout 这会打印出 0,这比我希望的要少.进行这种转换的正确方法是什么? 解决方案 你需要使用 SysAllocString(然后是 SysFre
..
我需要将 CString 实例转换为正确分配的 BSTR 并将该 BSTR 传递给 COM 方法.为了让代码能够同时为 ANSI 和 Unicode 编译和工作,我使用 CString::AllocSysString() 将任何格式的 CString 转换为 Unicode BSTR. 由于没有人拥有返回的 BSTR,我需要处理它并在调用完成后以最安全的方式和尽可能少的代码释放它. 目
..
假设来自 COM 接口的方法返回 BSTR 值.我认为我必须释放它是对的吗? http://msdn.microsoft.com/en-us/library/aa365382(VS.85).aspx 不这样做. 谁错了? 解决方案 MSDN 示例错误.调用者释放和输入/输出 bstrs.如果它是输入/输出,则必须传入 null 或有效的 bstr.如果只是out,就不用初始化了
..
在维护 COM 接口时,空的 BSTR 是否应该与 NULL 一样对待?换句话说,这两个函数调用是否应该产生相同的结果? //空 BSTRCComBSTR 空(L"");//或 SysAllocString(L"")someObj->Foo(空);//NULL BSTRsomeObj->Foo(NULL); 解决方案 是的 - NULL BSTR 与空 BSTR 相同.我记得当我们从 VS6
..
如何将 char * 从 C dll 传递到 VB 这里是示例代码: void Cfunc(char *buffer,int len){BSTR buf_bstr = SysAllocString((BSTR)buffer);VBptr.VBfunc(buf_bstr,len);} 这个功能不起作用,实际上一些其他值被发送到VB而不是实际值. 有人可以提出解决方案吗? 解决方
..
有人知道如何将 BSTR 转换为 char* 吗? 更新:我试过这样做,但不知道是对还是错. char *p= _com_util::ConvertBSTRToString(URL->bstrVal);strcpy(testDest,p); 解决方案 你的代码没问题.ConvertBSTRToString 确实只是.至于 strcpy,testDest 需要足够大以容纳 p 指向的字符
..
我有一个 _bstr_t 变量 bstrErr 并且我有一个 CString 变量 csError.如何将 bstrErr 中的值设置为 csError? 解决方案 是不是只能投了: _bstr_t b("Steve");CString cs;cs = (LPCTSTR) b; 我认为当项目是 Unicode 时这应该可以工作.
..
从ATL Internals一书中,我知道BSTR与OLECHAR*不同,BSTR有CComBSTR和CString. 根据 MSDN 分配和释放内存对于 BSTR,我知道调用者/被调用者的内存管理责任. 从 MSDN 中获取这一行, HRESULT CMyWebBrowser::put_StatusText(BSTR bstr) 我仍然不知道如何在我的实现中正确处理 bs
..
我需要将 CString 实例转换为正确分配的 BSTR 并将该 BSTR 传递给 COM 方法.为了让代码同时为 ANSI 和 Unicode 编译和工作,我使用 CString::AllocSysString() 将任何格式 CString 转换为 Unicode BSTR. 由于没有人拥有返回的 BSTR,我需要处理它并在调用完成后以最异常安全的方式和尽可能少的代码释放它. 目前
..
似乎在 64 位平台上使用 8 字节长度的前缀是合理的.如果我们可以处理超过 4Gb 的内存,为什么不允许使用 5Gb 字符串?答案只是“按规范"还是有一些我不知道的互操作性/向后兼容性原因?谢谢. 解决方案 BSTR 数据类型是标准的 COM 字符串数据类型.更改长度前缀将无法在不同位数的进程之间安全地移动字符串(或至少使其变得更加复杂).由于 COM 是唯一相关的跨位互操作基础设施,因
..
似乎在 64 位平台上使用 8 字节长度的前缀是合理的.如果我们可以处理超过 4Gb 的内存,为什么不允许使用 5Gb 字符串?答案只是“按规范"还是有一些我不知道的互操作性/向后兼容性原因?谢谢. 解决方案 BSTR 数据类型是标准的 COM 字符串数据类型.更改长度前缀将无法在不同位数的进程之间安全地移动字符串(或至少使其变得更加复杂).由于 COM 是唯一相关的跨位互操作基础设施,因
..
我已经做了C ++多年了,更不用说ATL代码了 我有这种方法需要手术帮助:( 这是针对移动应用程序的,因此我不想使用CString和MFC 我需要将BSTR * str转换为正确的类型LPCTSTR在注册表中使用Set.Value方法 STDMETHODIMP CAXSampleCtl :: SendMSG(BSTR * str) { CRegKey键; 键.C
..
请向我建议将wstring转换为CComBstr的方法。 我尝试按照以下方式进行转换,但失败了 CComBSTR BstrAddress(strID); // strID是wstring类型 我收到错误消息,因为“无法将参数1从'std :: wstring'转换为'int'”请为此提供帮助 解决方案 这些是CComBSTR类的构造函数: CComBSTR()th
..
我正在使用PHP在IIS 7上的类为COM的服务器上调用对象。 对象创建良好,但是当我使用它的方法,PHP返回此错误: PHP致命错误:消息“参数5:类型不匹配”的未捕获异常“ com_exception” 。 错误发生在参数$ bd中。 我的PHP代码: $ oem = new COM(“ LogicControlOEM.OEM_Ejecuta
..
WPF的PasswordBox返回一个SecureString,它对窥探者隐藏密码。 问题是您最终必须获得密码的值,以及我的建议在网上发现所有内容都涉及将值复制到字符串中,这使您回到侦听器的问题。 IntPtr bstr = Marshal.SecureStringToBSTR(secureString); 字符串密码= Marshal.PtrToStringBSTR(bstr);
..
有许多如何使用BSTR *参数调用IDispatch :: Invoke的示例。我可以将其与其他许多“ SomeType *”参数一起使用,但是无论我如何尝试,我都会得到类型不匹配的HRESULT,E_OUTOFMEMORY或访问冲突。在我看来,我在内存方面做错了事,但是我在遵循发现的不同示例...作为补充说明,最后的[[out] UINT puArgErr”参数永远不会填充参数索引,造成了问题。
..
我的VB6应用程序中包含以下代码: 私有声明函数FileGetParentFolder Lib“ Z-FileIO.dll” _ (作为字符串的ByVal路径)作为字符串 Output.AddItem FileGetParentFolder(FileText.Text) 输出是一个列表,FileText是包含文件路径的文本字段。我的C ++ DLL包含以下功能:
..
在64位平台上,最好使用8字节长的前缀。如果我们可以处理超过4Gb的内存,为什么不允许5Gb字符串呢?答案是“按规范”还是有我不知道的一些互操作性/向后兼容性原因? 谢谢。 解决方案 BSTR 数据类型是标准COM字符串数据类型。更改长度前缀将导致无法在不同位数的进程之间安全地移动字符串(或至少使其变得更加复杂)。由于COM是唯一相关的跨位互操作基础结构,因此对于32位进程和64位进程,
..
我有一个c ++代码.但是它不能正确释放内存.告诉我哪里错了,这是我的代码 1 void MyClass::MyFunction(void) 2 { 3 for (int i=0; i
..
所以在某些Arduino代码中,我是Serial.print几个这样的数字(var1=##,var2=##,var3=##).我有一个C ++ DLL,我正在获取该信息并将其解析为这样的变量数组("var1=",##.##,"var2=",##.##,"var3=",##.##),该字符串数组将字符串部分存储为变量BSTR,而将# s存储为变量双精度型.这个变量数组来自Excel,而我的C ++
..