-4

我有返回 VARIANT (mfc) 的函数 getMemory()。据说 ulVal 中的成员是指向我需要访问的内存的指针。

int m_memAddr = object.getMemory().ulVal; //get pointer to memory

然后我需要把这个指针指向我试过的 char*

char* pointer = (char*)m_memAddr;

它可以编译,但程序运行时出现错误。如何调试它?

函数getMemory:

VARIANT object::getMemory()
{
    VARIANT result;
    InvokeHelper(0x4a, DISPATCH_METHOD, VT_VARIANT, (void*)&result, NULL);
    return result;
}

//从我使用的相机库的文档中编辑:

VARIANT GetImageMem() 描述

GetImageMem() 返回指向存储图像的内部图像存储器的起始地址的指针。如果使用环形缓冲,GetImageMem() 将返回上次用于图像捕获的图像内存的起始地址。

指向图像内存的指针在 VARIANT 数据类型的元素 ulVal 中返回。参数

返回值

指向 VARIANT 数据类型的 ulVal 中的图像内存的指针。

这是返回我的相机存储图像的内存的函数的描述。

我想用 OpenCV 处理这个图像,所以我需要 char* 将它设置为 IplImage imageData。

现在我希望更清楚问题是什么。

4

1 回答 1

1

文档

pbParamInfo - 指向以 null 结尾的字节字符串的指针,该字符串指定 pbParamInfo 后面的参数类型。

... - pbParamInfo 中指定的类型的变量参数列表。

您正在传递 NULL pbParamInfo,我认为这意味着返回的变体中不会存储任何数据,因此指针当然是无效的。

如果您进一步遵循文档,您会发现传递VTS_BSTR指定您可以使用指向字符的指针初始化变量(将其作为 pbParamInfo 之后的下一个参数传递)。

于 2012-04-27T14:16:56.343 回答