Forum: PC-Programmierung Qt und WMI - wbemuuid.lib - Startprobleme


von Rentner O. (rentner323)


Lesenswert?

Hi,

ich schreibe an einem Qt Programm und wollte gerne den Akkuladezustand 
des Computers abfragen.

nach ein paar Stunden Google-suche bin ich jetzt soweit:
- das ganze geht mit WMI
- Einfache Beispiele zu WMI hier: 
http://msdn.microsoft.com/en-us/library/aa390423%28v=VS.85%29.aspx
Jetzt kommen die Probleme:
Ich benutze den Qt-Creator und Qt-Compiler (minigw). Habe also weder 
Microsoft Visual Studio noch sonst etwas installiert.

Was mich wundert ist, dass wenn ich die Folgenden Zeile in Qt schreibe:
1
#include <QCoreApplication>
2
#include <QSysInfo>
3
#include <iostream>
4
using namespace std;
5
#include <comdef.h>
6
#include <Wbemidl.h>
7
#include <QDebug>
8
9
10
int main(int argc, char *argv[])
11
{
12
    QCoreApplication a(argc, argv);
13
14
    HRESULT hr;
15
    hr = CoInitializeEx(0, COINIT_MULTITHREADED);
16
    if (FAILED(hr))
17
    { qDebug() << "Failed to initialize COM library. Error code = 0x"
18
           << hex << hr << endl;
19
      //return hr;
20
    }
21
22
    return a.exec();
23
}
Dann scheint Qt auf wundersame weise "Wbemidl.h" und "comdef.h" zu 
kennen, denn "HRESULT" als auch "CoInitializeEx" werden "erkannt" also 
wenn ich mit der Maus drüber fahre, zeigt er mir ein paar Informationen 
zu den Parametern etc.

Compilieren kann ich jedoch nicht:
... main.cpp:15: Fehler:undefined reference to `_imp__CoInitializeEx@8'

Im MSDN Beispiel ist noch dieser Befehl aufgeführt:
# pragma comment(lib, "wbemuuid.lib")

Was nach meiner Meinung den Computer anweisen soll, die "wbemuuid.lib" 
einzubinden. Da ich aber den Qt-Compliler nutze, funktioniert das nicht 
und so erkläre ich mir den Fehler.

Nach weiterem Googeln habe ich herausgefunden wie ich liberys in Qt 
einbinden kann, finde aber die "wbemuuid.lib" nicht auf meinem Computer.

Was für ein Microsoft SDK Gedöns was auch immer muss ich Installieren um 
an die Datei heranzukommen?

MfG

von Jean Player (Gast)


Lesenswert?

Hiho,
wenn es Windoof sein soll glaube ich war GetSystemPowerStatus das 
richtige, siehe WINAPI.
Unter Linux irgendwo unter /proc, aber ....
Alles ohne Gewähr.
Viel Erfolg und Mfg Fabi.

von Oliver (Gast)


Lesenswert?

Linkst du denn gegen die dll?

Oliver

von bluppdidupp (Gast)


Lesenswert?

Die ganzen Libs+Header sind im "Windows SDK" (ehemals "Platform SDK"):
http://msdn.microsoft.com/de-de/windows/desktop/bg162891
...allerdings sind die .lib's für den MS-Compiler und in der Regel mit 
anderen Compilern nicht kompatibel.

Bei mingw dürfte die Datei eher wbemuuid.a heißen. mingw kann inzwischen 
aber glaube ich auch die 32bit .lib-Dateien aus dem SDK fressen.

von Alexander B. (leuchte)


Lesenswert?

Rentner Opa schrieb:
> Compilieren kann ich jedoch nicht:
> ... main.cpp:15: Fehler:undefined reference to `_imp__CoInitializeEx@8'

Für CoInitializeEx musst du gegen Ole32.lib linken, sofern du sie denn 
hast.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.