gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:34:49 24 4
gpt4 key购买 nike

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

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

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

DLL_EXPORT(void) runUnitModel(char *rateMaterialTypeNames) {

HRESULT hr = CoInitialize(NULL);

// Create the interface pointer.
IUnitModelPtr pIUnit(__uuidof(BlastFurnaceUnitModel));

pIUnit->initialiseUnitModel();

int i;
for(i=0; i < sizeOfPortRatesArray; i++)
pIUnit->createPort(SysAllocString(BSTR((const char *)rateMaterialTypeNames[i])));

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

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

最佳答案

如果您使用的是 Microsoft 的 ATL,则可以使用 CComBSTR类(class)。它将接受一个 char* 并从中创建一个 BSTR,此外,您无需担心删除 BSTR,所有这些都发生在 CComBSTR 的 dtor 中。

另请参阅 Matthew Xaviers回答,看起来您没有正确地将字符串数组传递给该函数。

希望对你有帮助

关于c++ - 将 C 类型字符串数组中的元素作为 BSTR 传递给 COM 对象? (在 C++ 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/586734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com