我有函数getMemory(),它返回VARIANT(mfc)。 据说在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;
}
//从相机lib的文档编辑我使用:
VARIANT GetImageMem() 描述
GetImageMem()返回指向存储图像的内部图像存储器的起始地址的指针。如果使用环形缓冲,GetImageMem()将返回上次用于图像捕获的图像存储器的起始地址。
指向图像存储器的指针在VARIANT数据类型的元素ulVal中返回。 参数
返回值
指向VARIANT数据类型的ulVal中的图像存储器。
这是对我的相机存储图像的内存返回的功能的描述。
我想用OpenCV处理这个图像所以我需要char *将它设置为IplImage imageData。
现在我希望更清楚的是问题是什么。
答案 0 :(得分:1)
pbParamInfo - 指向以null结尾的字节字符串的指针,指定pbParamInfo之后的参数类型。
... - 参数的变量列表,在pbParamInfo中指定的类型。
您正在为pbParamInfo
传递NULL,我假设这意味着返回的变体中不会存储任何数据,因此指针无效。
如果您进一步遵循文档,您会发现传递VTS_BSTR
指定您可以使用指向char的指针初始化变量(将其作为pbParamInfo之后的下一个参数传递)。