Название: Qt4 + WMI + VS2005
Отправлено: IGHOR от Май 08, 2009, 00:36
Мне нужно использовать WMI в приложении Qt Есть такой пример WMI для С++: http://msdn.microsoft.com/en-us/library/aa390423(VS.85).aspx добавил его в пустой Qt проэкт созданный в Visual Studio 2005 Sp1 #include <QtGui/QApplication>
#define _WIN32_DCOM #include <iostream> using namespace std; #include <Windows.h> #include <Wbemidl.h> # pragma comment(lib, "wbemuuid.lib")
int main(int argc, char *argv[]) { QApplication a(argc, argv);
HRESULT hres;
// Step 1: -------------------------------------------------- // Initialize COM. ------------------------------------------
hres = CoInitializeEx(0, COINIT_MULTITHREADED); if (FAILED(hres)) { cout << "Failed to initialize COM library. Error code = 0x" << hex << hres << endl; return 1; // Program has failed. }
// Step 2: -------------------------------------------------- // Set general COM security levels -------------------------- // Note: If you are using Windows 2000, you need to specify - // the default authentication credentials for a user by using // a SOLE_AUTHENTICATION_LIST structure in the pAuthList ---- // parameter of CoInitializeSecurity ------------------------
hres = CoInitializeSecurity( NULL, -1, // COM authentication NULL, // Authentication services NULL, // Reserved RPC_C_AUTHN_LEVEL_DEFAULT, // Default authentication RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation NULL, // Authentication info EOAC_NONE, // Additional capabilities NULL // Reserved );
if (FAILED(hres)) { cout << "Failed to initialize security. Error code = 0x" << hex << hres << endl; MessageBox(0,L"Filed1",L"",0); CoUninitialize(); return 1; // Program has failed. } // Step 3: --------------------------------------------------- // Obtain the initial locator to WMI -------------------------
IWbemLocator *pLoc = NULL;
hres = CoCreateInstance( CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *) &pLoc); if (FAILED(hres)) { cout << "Failed to create IWbemLocator object." << " Err code = 0x" << hex << hres << endl; MessageBox(0,L"Filed1",L"",0);
CoUninitialize(); return 1; // Program has failed. }
// Step 4: ----------------------------------------------------- // Connect to WMI through the IWbemLocator::ConnectServer method
IWbemServices *pSvc = NULL; // Connect to the root\cimv2 namespace with // the current user and obtain pointer pSvc // to make IWbemServices calls. hres = pLoc->ConnectServer( BSTR(L"ROOT\\CIMV2"), // Object path of WMI namespace NULL, // User name. NULL = current user NULL, // User password. NULL = current 0, // Locale. NULL indicates current NULL, // Security flags. 0, // Authority (e.g. Kerberos) 0, // Context object &pSvc // pointer to IWbemServices proxy ); if (FAILED(hres)) { cout << "Could not connect. Error code = 0x" << hex << hres << endl; pLoc->Release(); CoUninitialize(); return 1; // Program has failed. }
cout << "Connected to ROOT\\CIMV2 WMI namespace" << endl;
// Step 5: -------------------------------------------------- // Set security levels on the proxy -------------------------
hres = CoSetProxyBlanket( pSvc, // Indicates the proxy to set RPC_C_AUTHN_WINNT, // RPC_C_AUTHN_xxx RPC_C_AUTHZ_NONE, // RPC_C_AUTHZ_xxx NULL, // Server principal name RPC_C_AUTHN_LEVEL_CALL, // RPC_C_AUTHN_LEVEL_xxx RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx NULL, // client identity EOAC_NONE // proxy capabilities );
if (FAILED(hres)) { cout << "Could not set proxy blanket. Error code = 0x" << hex << hres << endl; pSvc->Release(); pLoc->Release(); CoUninitialize(); return 1; // Program has failed. }
// Step 6: -------------------------------------------------- // Use the IWbemServices pointer to make requests of WMI ----
// For example, get the name of the operating system IEnumWbemClassObject* pEnumerator = NULL; hres = pSvc->ExecQuery( BSTR("WQL"), BSTR("SELECT * FROM Win32_OperatingSystem"), WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator); if (FAILED(hres)) { cout << "Query for operating system name failed." << " Error code = 0x" << hex << hres << endl; pSvc->Release(); pLoc->Release(); CoUninitialize(); return 1; // Program has failed. }
// Step 7: ------------------------------------------------- // Get the data from the query in step 6 ------------------- IWbemClassObject *pclsObj; ULONG uReturn = 0; while (pEnumerator) { HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1, &pclsObj, &uReturn);
if(0 == uReturn) { break; }
VARIANT vtProp;
// Get the value of the Name property hr = pclsObj->Get(L"Name", 0, &vtProp, 0, 0); wcout << " OS Name : " << vtProp.bstrVal << endl; MessageBox(0,vtProp.bstrVal,vtProp.bstrVal,0); VariantClear(&vtProp); }
// Cleanup // ======== pSvc->Release(); pLoc->Release(); pEnumerator->Release(); pclsObj->Release(); CoUninitialize(); getchar(); return 0; // Program successfully completed.
}
компилируеться прекрасно но здесь // Initialize COM. ------------------------------------------
hres = CoInitializeEx(0, COINIT_MULTITHREADED); if (FAILED(hres)) { cout << "Failed to initialize COM library. Error code = 0x" << hex << hres << endl; return 1; // Program has failed. } FAILED(hres) получаеться True..Failed to initialize COM library создаю проэкт в чистом С++ компилирую - работает Ранее не работал с СОМ обьектами. Помогите пожалуйста разобраться. Можно ли использовать WMI в Qt4 проэкте ?
Название: Re: Qt4 + WMI + VS2005
Отправлено: KADABRA от Май 08, 2009, 01:15
http://support.microsoft.com/kb/824480 http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/e1bc9fe4-d985-473a-88f7-ef2ed47f77b3/
Название: Re: Qt4 + WMI + VS2005
Отправлено: IGHOR от Май 08, 2009, 02:06
KADABRA Спасибо все работает!
Название: Re: Qt4 + WMI + VS2005
Отправлено: SABROG от Май 08, 2009, 08:36
Главное, чтобы потом такого не возникало http://forum.vingrad.ru/forum/topic-256663.html
Название: Re: Qt4 + WMI + VS2005
Отправлено: IGHOR от Май 10, 2009, 18:41
Главное, чтобы потом такого не возникало http://forum.vingrad.ru/forum/topic-256663.html
Протестировал, таких глюков нет, все прекрасно работает
Название: Re: Qt4 + WMI + VS2005
Отправлено: Alchazar от Январь 22, 2010, 16:02
Возможно ли использовать WMI в Qt без VS2005? пробую такой код: C++ (Qt) #define _WIN32_DCOM #include <QtGui/QApplication> #include <iostream> using namespace std; #include "mainwindow.h" #include "ui_mainwindow.h" #include "qt_windows.h" #include <QDebug> #include <QSettings> # pragma comment(lib, "wbemuuid.lib") #include "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\WbemIdl.h" //************** ........... ........... HRESULT hres; // Initialize COM. hres = CoInitializeEx(0, COINIT_MULTITHREADED); if (FAILED(hres)) { qDebug() << "Failed to initialize COM library. Error code = 0x" << hex << hres << endl; } // Initialize hres = CoInitializeSecurity( NULL, -1, // COM negotiates service NULL, // Authentication services NULL, // Reserved RPC_C_AUTHN_LEVEL_DEFAULT, // authentication RPC_C_IMP_LEVEL_IMPERSONATE, // Impersonation NULL, // Authentication info EOAC_NONE, // Additional capabilities NULL // Reserved ); if (FAILED(hres)) { qDebug() << "Failed to initialize security. " << "Error code = 0x" << hex << hres; CoUninitialize(); } // Obtain the initial locator to Windows Management // on a particular host computer. IWbemLocator *pLoc = 0; hres = CoCreateInstance( CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *) &pLoc); if (FAILED(hres)) { cout << "Failed to create IWbemLocator object. " << "Error code = 0x" << hex << hres << endl; CoUninitialize(); return 1; // Program has failed. } IWbemServices *pSvc = 0; ....
и получаю кучю ошибок: C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\WbemIdl.h:21: wbemcli.h: No such file or directory C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\WbemIdl.h:22: wbemprov.h: No such file or directory C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\WbemIdl.h:23: wbemtran.h: No such file or directory C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\WbemIdl.h:24: wbemdisp.h: No such file or directory mainwindow.cpp:90: error: `IWbemLocator' was not declared in this scope mainwindow.cpp:98: error: `pLoc' was not declared in this scope и так далее. Я так понимаю сам Qt не имеет необходимых библиотек или тут дело не в этом?
Название: Re: Qt4 + WMI + VS2005
Отправлено: niXman от Январь 22, 2010, 16:30
Возможно ли использовать WMI в Qt без VS2005? mingw? тогда не понятно почему указан путь к микросовтостудийным хидерам? #include "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\WbemIdl.h" # pragma comment(lib, "wbemuuid.lib") это так же в мингве не работает.
Название: Re: Qt4 + WMI + VS2005
Отправлено: niXman от Январь 22, 2010, 16:47
вот нестандартно укомплектованный мингв: http://rghost.ru/873164 должно скомпилиться.
Название: Re: Qt4 + WMI + VS2005
Отправлено: Alchazar от Январь 22, 2010, 17:14
Скопировал новый mingw, поправил include #define _WIN32_DCOM #include <QtGui/QApplication> #include <iostream>
#include "mainwindow.h" #include "ui_mainwindow.h" #include "qt_windows.h" #include <QDebug> #include <QSettings> #include "Wbemidl.h" Правильно теперь? А в .pro файл надо что нибуть добавлять? теперь такие ошибки(151шт): c:\qt\2009.04\mingw\bin\../lib/gcc/mingw32/4.4.0/../../../../include/wbemcli.h:1737: error: '__RPC__in' has not been declared c:\qt\2009.04\mingw\bin\../lib/gcc/mingw32/4.4.0/../../../../include/wbemcli.h:1737: error: expected ',' or '...' before 'strNamespace' c:\qt\2009.04\mingw\bin\../lib/gcc/mingw32/4.4.0/../../../../include/wbemcli.h:1744: error: '__RPC__in_opt' has not been declared c:\qt\2009.04\mingw\bin\../lib/gcc/mingw32/4.4.0/../../../../include/wbemcli.h:1744: error: expected ',' or '...' before '*' token ..... и т.д.
Название: Re: Qt4 + WMI + VS2005
Отправлено: niXman от Январь 22, 2010, 18:08
в каталоге с микрософтстудийным СДК, найдите файл rpcsal.h скопируйте его к хидерам мингва. добавьте в свой код: #include <rpcsal.h> и отпишитесь о результате.
Название: Re: Qt4 + WMI + VS2005
Отправлено: Alchazar от Январь 22, 2010, 20:55
попробовал, результат тот же :-[
Название: Re: Qt4 + WMI + VS2005
Отправлено: niXman от Январь 23, 2010, 01:21
точно такие-же ошибки?
Название: Re: Qt4 + WMI + VS2005
Отправлено: Alchazar от Январь 24, 2010, 18:45
да, те же ошибки, и то же количество ошибок
Название: Re: Qt4 + WMI + VS2005
Отправлено: Alchazar от Январь 25, 2010, 16:11
Пока что решил сделать dll-ку Visual Studio и использовать её в своей программе. Не уверен правильно ли это, но другого выхода я не придумал(.
Название: Re: Qt4 + WMI + VS2005
Отправлено: kuzulis от Февраль 01, 2010, 14:16
Alchazar ,
мне тоже нужно использовать WMI... Хочу сделать универсальное решение путем подгрузки виндовой системной динамической библиотеки (библиотек). Только проблема в том, что я не знаю какие библиотеки нужны + хочу чтобы компилилось как в VS, так и в стандартном minGW!
Люди, подскажите кто нибудь... Нужны идеи... :)
Название: Re: Qt4 + WMI + VS2005
Отправлено: niXman от Февраль 01, 2010, 15:32
да, те же ошибки, и то же количество ошибок
полный вывод ошибок пожалуйста.
Название: Re: Qt4 + WMI + VS2005
Отправлено: niXman от Февраль 01, 2010, 15:32
не видно вопросов ;)
Название: Re: Qt4 + WMI + VS2005
Отправлено: Alchazar от Февраль 20, 2010, 12:22
Удалось избавиться от ошибок, теперь получаю 18 варнингов и collect2: ld returned 1 exit status инклюды: #include <QtCore/QCoreApplication>
#define _WIN32_DCOM #include <rpcsal.h> #include "qt_windows.h" #include <wbemidl.h> using namespace std; тут вроде бы всё хорошо погуглил свои ошибки, в гугле пишут, что моя проблема в том, что lib файл не подключен. Может я его неправильно подключаю? QT -= gui INCLUDEPATH += C:/Qt/2009.04/qt/lib LIBS += C:/Qt/2009.04/qt/lib/wbemuuid.Lib TARGET = qt_wmi CONFIG += console CONFIG -= app_bundle TEMPLATE = app SOURCES += main.cpp ошибки: Running build steps for project qt_wmi... Configuration unchanged, skipping QMake step. Starting: C:/Qt/2009.04/mingw/bin/mingw32-make.exe -w mingw32-make: Entering directory `Q:/Darbai/c++/qt_wmi/qt_wmi' c:\Qt\2009.04\qt\bin\qmake.exe -spec c:\Qt\2009.04\qt\mkspecs\win32-g++ -win32 -o Makefile qt_wmi.pro mingw32-make: Leaving directory `Q:/Darbai/c++/qt_wmi/qt_wmi' mingw32-make: Entering directory `Q:/Darbai/c++/qt_wmi/qt_wmi' C:/Qt/2009.04/mingw/bin/mingw32-make -f Makefile.Debug mingw32-make[1]: Entering directory `Q:/Darbai/c++/qt_wmi/qt_wmi' g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-subsystem,console -mthreads -Wl -o debug\qt_wmi.exe debug/main.o -L"c:\Qt\2009.04\qt\lib" C:/Qt/2009.04/qt/lib/wbemuuid.Lib -lQtCored4 mingw32-make[1]: Leaving directory `Q:/Darbai/c++/qt_wmi/qt_wmi' mingw32-make: Leaving directory `Q:/Darbai/c++/qt_wmi/qt_wmi' debug/main.o: In function `Z7cpuDatav': Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:43: undefined reference to `CoInitializeEx@8' Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:62: undefined reference to `CoInitializeSecurity@36' Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:69: undefined reference to `CoUninitialize@0' Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:81: undefined reference to `CoCreateInstance@20' Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:87: undefined reference to `CoUninitialize@0' Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:120: undefined reference to `CoUninitialize@0' Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:134: undefined reference to `CoSetProxyBlanket@32' Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:142: undefined reference to `CoUninitialize@0' Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:160: undefined reference to `CoUninitialize@0' Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:201: undefined reference to `VariantClear@4' Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:224: undefined reference to `CoUninitialize@0' Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:238: undefined reference to `CoSetProxyBlanket@32' Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:246: undefined reference to `CoUninitialize@0' Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:264: undefined reference to `CoUninitialize@0' Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:288: undefined reference to `VariantClear@4' Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:300: undefined reference to `CoUninitialize@0' collect2: ld returned 1 exit status mingw32-make[1]: *** [debug\qt_wmi.exe] Error 1 mingw32-make: *** [debug] Error 2 Exited with code 2. Error while building project qt_wmi When executing build step 'Make'
Если в про файле изменить LIBS += C:/Qt/2009.04/qt/lib/wbemuuid.Lib на LIBS += -lC:/Qt/2009.04/qt/lib/wbemuuid.Libтогда варнингов нету, есть только collect2: ld returned 1 exit statusRunning build steps for project qt_wmi... Configuration unchanged, skipping QMake step. Starting: C:/Qt/2009.04/mingw/bin/mingw32-make.exe -w mingw32-make: Entering directory `Q:/Darbai/c++/qt_wmi/qt_wmi' c:\Qt\2009.04\qt\bin\qmake.exe -spec c:\Qt\2009.04\qt\mkspecs\win32-g++ -win32 -o Makefile qt_wmi.pro mingw32-make: Leaving directory `Q:/Darbai/c++/qt_wmi/qt_wmi' mingw32-make: Entering directory `Q:/Darbai/c++/qt_wmi/qt_wmi' C:/Qt/2009.04/mingw/bin/mingw32-make -f Makefile.Debug mingw32-make[1]: Entering directory `Q:/Darbai/c++/qt_wmi/qt_wmi' g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-subsystem,console -mthreads -Wl -o debug\qt_wmi.exe debug/main.o -L"c:\Qt\2009.04\qt\lib" -lC:/Qt/2009.04/qt/lib/wbemuuid.Lib -lQtCored4 mingw32-make[1]: Leaving directory `Q:/Darbai/c++/qt_wmi/qt_wmi' mingw32-make: Leaving directory `Q:/Darbai/c++/qt_wmi/qt_wmi' c:/qt/2009.04/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe: cannot find -lC:/Qt/2009.04/qt/lib/wbemuuid.Lib collect2: ld returned 1 exit status mingw32-make[1]: *** [debug\qt_wmi.exe] Error 1 mingw32-make: *** [debug] Error 2 Exited with code 2. Error while building project qt_wmi When executing build step 'Make' Тут он не находит wbemuuid.Lib - cannot find -lC:/Qt/2009.04/qt/lib/wbemuuid.Lib
Название: Re: Qt4 + WMI + VS2005
Отправлено: Alchazar от Февраль 24, 2010, 10:51
Неужто никто не подскажет что я не так делаю?
Название: Re: Qt4 + WMI + VS2005
Отправлено: kuzulis от Февраль 24, 2010, 12:40
Попробуй вместо: ... LIBS += C:/Qt/2009.04/qt/lib/wbemuuid.Lib ...
это: ... QMAKE_LIBDIR += C:/Qt/2009.04/qt/lib/ LIBS += -lwbemuuid ...
+ ко всему, ИМХО, убери свою эту WMI - шную либу из C:/Qt/2009.04/qt/lib/ , а создай лучше каталог параллельно каталогу твоего проекта и скопируй туда и хейдеры и саму либу, что то типа: / | |->/тут твой каталог с проектом (или src) | |->/тут каталог с хейдером(ами) и либой(ами)
Название: Re: Qt4 + WMI + VS2005
Отправлено: Alchazar от Февраль 24, 2010, 12:56
не помогает, к старым ошибкам добавились ещё несколько новых: debug/main.o: In function `main': Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:29: undefined reference to `_imp___ZN16QCoreApplicationC1ERiPPc' Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:31: undefined reference to `_imp___ZN16QCoreApplication4execEv' Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:31: undefined reference to `_imp___ZN16QCoreApplicationD1Ev' Q:\Darbai\c++\qt_wmi\qt_wmi/main.cpp:31: undefined reference to `_imp___ZN16QCoreApplicationD1Ev'
Название: Re: Qt4 + WMI + VS2005
Отправлено: kuzulis от Февраль 24, 2010, 13:07
А *.dll ки этой самой библиотеки нету? т.е. в наличии имеется только *.lib ?
Название: Re: Qt4 + WMI + VS2005
Отправлено: Alchazar от Февраль 24, 2010, 13:10
.dll нету, есть только .lib файл
перенёс либ в отдельную папку: QMAKE_LIBDIR += Q:\Darbai\c++\qt_wmi\qt_wmi\lib LIBS += -lwbemuuid
новые ошибки пропали, но старые остались
Название: Re: Qt4 + WMI + VS2005
Отправлено: kuzulis от Февраль 24, 2010, 13:20
Есть мысля (хотя не мысля - а подозрение, и даже уверенность), что тебе не нужно использовать эту *.lib !!! т.к. эта либка используется для VS и просто как бы скрывает использование реальных системных dll-лок винды - а ты используеш MinGW!!!
Имхо, весь функционал WMI уже есть в самой винде в её *.dll ках, которые находятся в /System32 и т.п. т.е. попробуй использовать для своих целей именно эти динамические библиотеки!!! тебе только нужно узнать какая/какие из *.dll лок предоставляют WMI функционал и будет все в шоколаде! :)
PS: посмотри в MSDN , там обычно внизу страницы написано из каких динамических библиотек винды можно достать требуемый функционал
Название: Re: Qt4 + WMI + VS2005
Отправлено: kuzulis от Февраль 24, 2010, 13:44
И если уж перенес в новую папку и собираешься использовать библиотеку: перенёс либ в отдельную папку: QMAKE_LIBDIR += Q:\Darbai\c++\qt_wmi\qt_wmi\lib LIBS += -lwbemuuid
то лучше не писать полный путь: Q:\Darbai\c++\qt_wmi\qt_wmi\lib, а написать относительный, типа: ../../../qt_wmi/lib (что-то типо этого) :) (ИМХО)
Название: Re: Qt4 + WMI + VS2005
Отправлено: Alchazar от Февраль 24, 2010, 13:56
Поправил путь на относительный. Я вот нашёл в гугле DispHelper - http://disphelper.sourceforge.net/ (http://disphelper.sourceforge.net/) Судя по описанию, он как бы должен мне подойти. DispHelper is a COM helper library that can be used in C++ or even plain C. No MFC or ATL is required. It allows you to call COM objects with an easy printf style syntax.
It is compatible with most Windows compilers including Dev-C++, Visual C++ and LCC-WIN32. Including DispHelper in your project couldn't be simpler as it is available in a compacted single file version.
Included with DispHelper are over 20 samples that demonstrate using COM objects including ADO, CDO, Outlook, Eudora, Excel, Word, Internet Explorer, MSHTML, PocketSoap, Word Perfect, MS Agent, SAPI, MSXML, WIA, dexplorer and WMI. попрубую его поковырять, может получится что нибудь
Название: Re: Qt4 + WMI + VS2005
Отправлено: Alchazar от Февраль 24, 2010, 16:12
DispHelper тоже undefined reference выкидывает) debug/main.o: In function `Z8HotFixesPKw': Q:\Darbai\c++\qt_dispHelper/main.cpp:50: undefined reference to `dhGetObject' mingw32-make[1]: Leaving directory `Q:/Darbai/c++/qt_dispHelper' mingw32-make: Leaving directory `Q:/Darbai/c++/qt_dispHelper' Q:\Darbai\c++\qt_dispHelper/main.cpp:53: undefined reference to `dhGetValue' Q:\Darbai\c++\qt_dispHelper/main.cpp:55: undefined reference to `dhEnumBegin' Q:\Darbai\c++\qt_dispHelper/main.cpp:59: undefined reference to `dhGetValue' Q:\Darbai\c++\qt_dispHelper/main.cpp:60: undefined reference to `dhGetValue' Q:\Darbai\c++\qt_dispHelper/main.cpp:61: undefined reference to `dhGetValue' Q:\Darbai\c++\qt_dispHelper/main.cpp:62: undefined reference to `dhGetValue' Q:\Darbai\c++\qt_dispHelper/main.cpp:63: undefined reference to `dhGetValue' Q:\Darbai\c++\qt_dispHelper/main.cpp:55: undefined reference to `dhEnumNextObject' debug/main.o:Q:\Darbai\c++\qt_dispHelper/disphelper.h:586: undefined reference to `dhFormatExceptionA' debug/main.o:Q:\Darbai\c++\qt_dispHelper/disphelper.h:473: undefined reference to `SysFreeString@4' collect2: ld returned 1 exit status Попробую в виртуалке на чистом windows скомпилировать, может у меня в qt какая проблема... В виртуалке то же самое... не компилируется не одна программа, те же ошибки выкидывает
Название: Re: Qt4 + WMI + VS2005
Отправлено: dox от Сентябрь 05, 2010, 11:17
Приветствую. На скок я понял юзается .lib + .dll в кьют проекте. У самого подобная трабла была. Выдавало несколько ошибок. Причем под студию норма все собиралось. Надо юзать .a + .dll. Файлы .a я собирал под кьютом с помощью того же mingw. Итого, попробуй собрать из исходников и получить файлы .a+ .dll, а в настройках прописывай как обычно.
|