我正在尝试使用C ++ / CLI列出所有WIA设备。我是C ++ / CLI的新手(尽管我认为自己是一名中级C ++程序员),但我一直收到这个错误:
error C2664: 'WIA::IDeviceInfos::default::get' : cannot convert parameter 1 from 'int' to 'System::Object ^%'
使用以下代码段时:
DeviceManager^ dm = (gcnew WIA::DeviceManager());
for (int i = 1; i <= dm->DeviceInfos->Count; i++)
{
String^ deviceName = dm->DeviceInfos[i].Properties("Name")->get_Value()->ToString();
this->devices->Items->Add(deviceName);
}
为什么我应该将 int 视为对象?在托管C ++中有拳击的概念,但它在这里不起作用,无论如何我认为C ++ / CLI是为了摆脱它而引入的?
答案 0 :(得分:0)
Value属性需要一些非显而易见的代码来解决它。试试这个:
WIA::DeviceInfo ^ info = dm->DeviceInfos[gcnew System::Int32(i)];
WIA::Property ^ propName = info->Properties[gcnew System::String(L"Name")];
String ^ strName = propName->default->ToString();