Wie benutze ich WIA in C ++?
Frage
ich fand Dies Tutorial über die Verwendung von WIA in C ++, aber ich verstehe nicht, wie ich es verwenden soll. Das Folgende ist nicht erfolgreich und ich nicht, was hier genau falsch ist. Grundsätzlich habe ich den Code aus dem Tutorial kopiert.
void init() {
IWiaDevMgr2* devMgr;
HRESULT hr = createWiaDeviceManager( &devMgr );
if(!SUCCEEDED(hr))
{
std::cout << "couldn't create WIA Device Manager!\n";
return;
}
...
}
HRESULT createWiaDeviceManager(IWiaDevMgr2** devMgr)
{
if(devMgr == 0) return E_INVALIDARG;
*devMgr = 0;
return CoCreateInstance( CLSID_WiaDevMgr2, 0, CLSCTX_LOCAL_SERVER, IID_IWiaDevMgr2, (void**)devMgr);
}
Übrigens verwende ich Windows 7 64-Bit, daher sollte die Verwendung von iwiadevmgr2 in Ordnung sein.
Lösung
CreateWiadeVICEManager kehrt immer -2147221008 zurück
Das ist 0x800401F0, wenn Sie es als unsignierte Nummer interpretieren/anzeigen. Wie Sie sollten, ist Hresult kein signierter Typ. Aus der sdk -Datei winError.h:
//
// MessageId: CO_E_NOTINITIALIZED
//
// MessageText:
//
// CoInitialize has not been called.
//
#define CO_E_NOTINITIALIZED _HRESULT_TYPEDEF_(0x800401F0L)
Fügen Sie diese Zeile Ihrem Initialisierungscode hinzu:
CoInitialize(NULL);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow