Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 转换C++;dotnet中从pbVal到字节数组的变量 我试图将一些C++代码重构成DOTNET(C或VB)。C++代码使用了变体类型,并在调用了COM对象之后使用PBVAL。下面是C++代码的突出部分: long bufSize; int width, height; VARIANT var; TCHAR tc[32]; ::GetWindowText(GetDlgItem(IDC_EDIT_RESOL_X)->m_hWnd, tc, 12); width = _ttoi(tc); ::GetWindowText(GetDlgItem(IDC_EDIT_RESOL_Y)->m_hWnd, tc, 12); height = _ttoi(tc); m_dlgVideo.m_tvsLive.GetSnapshot(m_dlgVideo.m_lCurChID, lCompression, width, height, &var, &bufSize); CFile oWrFile; oWrFile.Open(_T("C:\\temp\\test_asbuffer.jpg"), CFile::modeCreate | CFile::modeReadWrite); oWrFile.Write(var.pbVal, bufSize); oWrFile.Close(); CoTaskMemFree(var.pbVal); 我的困惑(缺少知识)与把C++变量传递到GETSnAppSpple调用有关。我的假设是,在调用之后,变量(var)将以数组的形式返回,但它只返回一个单字节值(255)。 在Dotnet中,我尝试将var作为Object、Byte或VariantType传入,每次都得到相同的结果(单字节值255)。如果我试图传入一个数组(例如Object[]或Byte[]或Variant[]),该方法会抱怨并说无法将“System.Byte”类型的对象强制转换为“System.Byte[]”类型。_C#_C++_Variant - Fatal编程技术网

C# 转换C++;dotnet中从pbVal到字节数组的变量 我试图将一些C++代码重构成DOTNET(C或VB)。C++代码使用了变体类型,并在调用了COM对象之后使用PBVAL。下面是C++代码的突出部分: long bufSize; int width, height; VARIANT var; TCHAR tc[32]; ::GetWindowText(GetDlgItem(IDC_EDIT_RESOL_X)->m_hWnd, tc, 12); width = _ttoi(tc); ::GetWindowText(GetDlgItem(IDC_EDIT_RESOL_Y)->m_hWnd, tc, 12); height = _ttoi(tc); m_dlgVideo.m_tvsLive.GetSnapshot(m_dlgVideo.m_lCurChID, lCompression, width, height, &var, &bufSize); CFile oWrFile; oWrFile.Open(_T("C:\\temp\\test_asbuffer.jpg"), CFile::modeCreate | CFile::modeReadWrite); oWrFile.Write(var.pbVal, bufSize); oWrFile.Close(); CoTaskMemFree(var.pbVal); 我的困惑(缺少知识)与把C++变量传递到GETSnAppSpple调用有关。我的假设是,在调用之后,变量(var)将以数组的形式返回,但它只返回一个单字节值(255)。 在Dotnet中,我尝试将var作为Object、Byte或VariantType传入,每次都得到相同的结果(单字节值255)。如果我试图传入一个数组(例如Object[]或Byte[]或Variant[]),该方法会抱怨并说无法将“System.Byte”类型的对象强制转换为“System.Byte[]”类型。

C# 转换C++;dotnet中从pbVal到字节数组的变量 我试图将一些C++代码重构成DOTNET(C或VB)。C++代码使用了变体类型,并在调用了COM对象之后使用PBVAL。下面是C++代码的突出部分: long bufSize; int width, height; VARIANT var; TCHAR tc[32]; ::GetWindowText(GetDlgItem(IDC_EDIT_RESOL_X)->m_hWnd, tc, 12); width = _ttoi(tc); ::GetWindowText(GetDlgItem(IDC_EDIT_RESOL_Y)->m_hWnd, tc, 12); height = _ttoi(tc); m_dlgVideo.m_tvsLive.GetSnapshot(m_dlgVideo.m_lCurChID, lCompression, width, height, &var, &bufSize); CFile oWrFile; oWrFile.Open(_T("C:\\temp\\test_asbuffer.jpg"), CFile::modeCreate | CFile::modeReadWrite); oWrFile.Write(var.pbVal, bufSize); oWrFile.Close(); CoTaskMemFree(var.pbVal); 我的困惑(缺少知识)与把C++变量传递到GETSnAppSpple调用有关。我的假设是,在调用之后,变量(var)将以数组的形式返回,但它只返回一个单字节值(255)。 在Dotnet中,我尝试将var作为Object、Byte或VariantType传入,每次都得到相同的结果(单字节值255)。如果我试图传入一个数组(例如Object[]或Byte[]或Variant[]),该方法会抱怨并说无法将“System.Byte”类型的对象强制转换为“System.Byte[]”类型。,c#,c++,variant,C#,C++,Variant,我的dotnet代码如下所示 System.Byte imgVar = 0; long imgSize = 0L; try { axTVS.Snapshot(iTVSID, 50, false); axTVS.GetSnapshot(iTVSID, 50L, 400, 225, imgVar, imgSize); } catch (Exception ex) { //catch error and handle here } imgSize返回一个数组的有效大小(1

我的dotnet代码如下所示

System.Byte imgVar = 0;
long imgSize = 0L;

try {
    axTVS.Snapshot(iTVSID, 50, false);
    axTVS.GetSnapshot(iTVSID, 50L, 400, 225, imgVar, imgSize);
} catch (Exception ex) {
    //catch error and handle here

}
imgSize返回一个数组的有效大小(13559),但这个讨厌的imgVar只是一个字节(255)。正如我所说的-尝试传入字节数组失败

有人知道怎么处理吗


我的假设(可能有缺陷)是var应该作为一个字节数组返回,它是图像数据,然后我可以很容易地将其转换为图像

什么让你认为你应该通过任何东西来获得IMGVAR,而不是一个变量的地址来写一个结果?我可以看到这就是C++代码中发生的事情(例如,在变量变量指针中的var传递)-但是我没有找到一种在dotnet中实现这一点的方法。因为dotnet是托管代码,所以它不希望您四处传递指针。如果没有办法在dotnet中使用COM组件方法,那就太遗憾了。