Russian Qt Forum
Ноябрь 18, 2024, 21:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Qt4 + WMI + VS2005  (Прочитано 23827 раз)
niXman
Гость
« Ответ #15 : Февраль 01, 2010, 15:32 »

да, те же ошибки, и то же количество ошибок
полный вывод ошибок пожалуйста.
Записан
niXman
Гость
« Ответ #16 : Февраль 01, 2010, 15:32 »

не видно вопросов Подмигивающий
Записан
Alchazar
Гость
« Ответ #17 : Февраль 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 status
Код:
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" -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
Записан
Alchazar
Гость
« Ответ #18 : Февраль 24, 2010, 10:51 »

Неужто никто не подскажет что я не так делаю?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #19 : Февраль 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)
|
|->/тут каталог с хейдером(ами) и либой(ами)
« Последнее редактирование: Февраль 24, 2010, 12:53 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Alchazar
Гость
« Ответ #20 : Февраль 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'
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #21 : Февраль 24, 2010, 13:07 »

А *.dll ки этой самой библиотеки нету? т.е. в наличии имеется только *.lib ?
Записан

ArchLinux x86_64 / Win10 64 bit
Alchazar
Гость
« Ответ #22 : Февраль 24, 2010, 13:10 »

.dll нету, есть только .lib файл

перенёс либ в отдельную папку:
QMAKE_LIBDIR    += Q:\Darbai\c++\qt_wmi\qt_wmi\lib
LIBS            += -lwbemuuid

новые ошибки пропали, но старые остались
« Последнее редактирование: Февраль 24, 2010, 13:13 от Alchazar » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #23 : Февраль 24, 2010, 13:20 »

Есть мысля (хотя не мысля - а подозрение, и даже уверенность), что тебе не нужно использовать эту *.lib !!!
т.к. эта либка используется для VS и просто как бы скрывает использование реальных системных dll-лок винды - а ты используеш MinGW!!!

Имхо, весь функционал WMI уже есть в самой винде в её *.dll ках, которые находятся в /System32  и т.п.
т.е. попробуй использовать для своих целей именно эти динамические библиотеки!!!
тебе только нужно узнать какая/какие из *.dll лок предоставляют WMI функционал и будет все в шоколаде! Улыбающийся

PS: посмотри в MSDN , там обычно внизу страницы написано из каких динамических библиотек винды можно достать требуемый функционал
« Последнее редактирование: Февраль 24, 2010, 13:29 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #24 : Февраль 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 (что-то типо этого) Улыбающийся (ИМХО)
Записан

ArchLinux x86_64 / Win10 64 bit
Alchazar
Гость
« Ответ #25 : Февраль 24, 2010, 13:56 »

Поправил путь на относительный.

Я вот нашёл в гугле DispHelper - 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.

попрубую его поковырять, может получится что нибудь
« Последнее редактирование: Февраль 24, 2010, 14:47 от Alchazar » Записан
Alchazar
Гость
« Ответ #26 : Февраль 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 какая проблема...

В виртуалке то же самое... не компилируется не одна программа, те же ошибки выкидывает
« Последнее редактирование: Февраль 24, 2010, 17:21 от Alchazar » Записан
dox
Гость
« Ответ #27 : Сентябрь 05, 2010, 11:17 »

Приветствую. На скок я понял юзается .lib + .dll в кьют проекте.  У самого подобная трабла была. Выдавало несколько ошибок. Причем под студию норма все собиралось. Надо юзать .a + .dll.  Файлы .a я собирал под кьютом с помощью того же mingw. Итого, попробуй собрать из исходников и получить файлы .a+ .dll, а в настройках прописывай как обычно.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.153 секунд. Запросов: 23.