当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《将元素从C类型字符串数组传递给COM对象作为BSTR?(在C++中)》经验,为你挑选了1个好方法。

我正在编写一个由外部程序调用的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的值,而不是单个字符.



1> Binary Worri..:

如果您使用的是微软ATL,则可以使用CComBSTR类.它将接受一个char*并从中创建一个BSTR,同样,你不必担心删除BSTR,所有这些都发生在CComBSTR的dtor中.

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

希望这可以帮助

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有