问题标签 [bstr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
20094 浏览

c++ - 如何有效地将 BSTR 复制到 wchar_t[]?

我有一个 BSTR 对象,我想将其转换为复制到 wchar__t 对象。棘手的是 BSTR 对象的长度可能从几千字节到几百千字节不等。有没有一种有效的方法来复制数据?我知道我可以只声明一个 wchar_t 数组并始终分配它需要保存的最大可能数据。然而,这意味着为可能只需要几千字节的东西分配数百千字节的数据。有什么建议么?

0 投票
5 回答
5644 浏览

c++ - 在最佳时间从 _variant_t 获取 char*

这是我想加快速度的代码。它从 ADO 记录集中获取一个值并将其转换为 char*。但这很慢。我可以跳过 _bstr_t 的创建吗?

0 投票
2 回答
8827 浏览

com - 空 BSTR 和 NULL BSTR 之间应该有区别吗?

在维护COM接口时,是否应该以BSTRNULL? 换句话说,这两个函数调用是否应该产生相同的结果?

0 投票
1 回答
4459 浏览

c++ - COM, VARIANT 包含 BSTR。谁分配?

好的,所以我真的想不出一个恰当的标题来总结这一点。

IPrintPipelinePropertyBag 接口具有 AddProperty 方法,该方法非常恰当地“将属性添加到属性包”。

http://msdn.microsoft.com/en-us/library/aa506384.aspx

AddProperty( [in, string] const wchar_t *pszName, [in] const VARIANT *pVar );

我们使用以下代码将字符串添加到属性包中。

但是,很明显,所创建的 CComBSTR 和 CComVariant 会在一段时间后超出范围。我不确定 PropertyBag 是否处理字符串并制作自己的副本。因为我们可以在 VARIANT 中存储各种东西,所以不应该这样。

假设未处理字符串,我的问题是,在 COM 中执行此操作的模式是什么?我应该如何传递一个包含已分配字符串的 VARIANT,即使调用 AddProperty 的线程先死亡,也使该字符串可用于其他线程,并正确取消分配字符串?

0 投票
4 回答
5294 浏览

c++ - 在 C/C++ 中将 BSTR 参数转换为 ANSI 的更好代码是什么?

到目前为止,我发现我可以通过两种(许多?)方式将传入的 BSTR 转换为 ANSI,我很想知道在速度/效率等方面,一种是否比另一种“更好”。

我已经使用了一段时间的方式是使用USES_CONVERSIONandW2A宏,例如

然而,最近,我遇到了另一种技术:

现在我承认,它更冗长,并且有两个调用,wcstombs但据我所知USES_CONVERSIONW2A宏可能隐藏着各种乐趣和游戏。

哪个代码更高效/更快?或者,我可以使用另一种技术来更好地完成这项工作吗?

0 投票
3 回答
1589 浏览

c++ - 将 C 类型字符串数组中的元素作为 BSTR 传递给 COM 对象?(在 C++ 中)

我正在编写一个由外部程序调用的 C++ DLL。

1.) 我将一个字符串数组(作为 char *var)作为该程序的参数。

2.) 我想遍历这个数组并在字符串数组的每个元素上调用一个 COM 函数。COM 函数必须采用 BSTR:

我认为它的 SysAllocString(BSTR((const char *)rateMaterialTypeNames[i])) 位给我带来了问题。程序运行时出现访问冲突。

这是在 i 处访问 rateMaterialTypeName 值的正确方法吗?请注意,我期望像“IronOre”这样的值作为 i 的值,而不是单个字符。

0 投票
5 回答
42399 浏览

c - 如何将 char * 转换为 BSTR?

如何将 char * 从 C dll 传递到 VB

这是示例代码:

此功能不起作用,实际上一些其他值被发送到 VB,而不是实际值。

有人可以提出解决方案吗?

0 投票
3 回答
4868 浏览

c++ - _bstr_t 到 UTF-8 可能吗?

我有一个_bstr_t包含日语文本的字符串。我想将此字符串转换为定义为char *.

我可以将_bstr_t字符串转换为char *(UTF-8) 字符串而不会丢失日文字符吗?

0 投票
6 回答
2018 浏览

c++ - 在 MSMQ 消息中发送具有 BSTR 值类型的 COM 对象

我正在尝试通过 C++ 中的 MSMQ 消息发送 COM 对象。这是我的对象:

一切都很好,我可以得到整个对象,但 BSTR 类型。浮点数和整数被正确发送和接收。但是 BSTR 类型不起作用。我正在尝试发送字符串,但找不到路。我确实尝试使用 VARIANT,但结果也是错误的。不知何故,看起来字符串没有序列化。

这些是我的 ATL 组件的一些 get 和 set 函数:

这个工作正常:

这个没有:

这就是我创建 MSMQ 消息并在生产者中填充值的方式:

这是序列化代码

如果我在生产者中获得 BSTR 值(在序列化之前) pAnalisis-getImgName(),它工作正常。相反,当我尝试在消费者中获取它时,在从队列中读取消息后,它不会返回任何内容。其他值(例如大小)可以毫无问题地返回。

有谁知道如何通过 MSMQ 在 COM 对象内发送 BSTR 值?

我试图找到一些类似的例子,但完全是徒劳的。

问题是我得到了一个带有奇怪字符的非常奇怪的值或一个十六进制值,这取决于我如何提取值..问题是我永远不会得到正确的值。

我想知道,但是......我们确定可以发送 BSTR 值吗?如果我没记错的话,它是一个指向字符串的指针......我正在运行两个不同的进程(即生产者和消费者),所以它们使用不同的内存块,它们应该在不同的机器上运行。 ..

我试图将此信息作为 VARIANT 类型发送..但也迷路了。但是,这似乎比发送 BSTR 更牵强。

对此有任何想法吗?

0 投票
3 回答
2063 浏览

windows - 使用空 BSTR 记录在哪里?

将空 BSTR(空 WCHAR* 指针)视为空字符串并相应地设计所有操作 BSTR 的代码至少是一种常见的做法。这个问题的答案是一样的。

这种做法记录在哪里?有没有描述这个约定的官方文件?