0

我正在尝试使用 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视为Object?在托管 C++ 中有拳击的概念,但它在这里不起作用,无论如何我认为引入 C++/CLI 是为了摆脱它?

4

1 回答 1

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();
于 2012-08-22T07:56:05.307 回答