【问题标题】:Length of BSTR (COM) [closed]BSTR(COM)的长度[关闭]
【发布时间】:2017-04-05 10:06:29
【问题描述】:

我有 COM(c, c++) 和 C# 中的应用程序。 我将 C# 应用程序中的变量 textbox.Text 传递给 COM 的函数 Func(BSTR inData, BSTR outData),如下所示:Func(textbox.Text, outData)。

在 C# 应用程序中 textBox.Text.Length = 32(例如),但在 COM 中 SysStringLen(inData) = 40。为什么?我该如何解决?

提前谢谢你!

最好的问候,

玛丽

【问题讨论】:

  • 非凡的主张需要非凡的证据,我没有看到任何证据。至少向我们展示调试器告诉您的有关 C# 和 C++ 代码中实际字符串内容的内容。

标签: c# c++ com


【解决方案1】:

来自 MSDN:

SysStringLen 函数

如果 BSTR 包含嵌入的 Null 字符,则返回值可能与 strlen(bstr) 不同。

【讨论】:

  • 当我写strlen(inData) 时出现错误:BSTR 类型与“const char *”类型的参数不兼容。
  • 使用wcslen,它是一个widechar字符串。
  • 我试过了。 wcslen 也返回 40。 :(
  • 显示 COM 调用的 C# 代码。
  • 同时手动比较textBox.Text和inData的32个符号。
猜你喜欢
  • 2012-05-14
  • 2010-09-20
  • 2016-06-27
  • 2014-02-04
  • 1970-01-01
  • 1970-01-01
  • 2011-10-25
  • 2010-12-21
  • 2015-10-22
相关资源
最近更新 更多