QT Funktionen in Win32 Projekt verwenden?
-
Hi,
ich habe mir gerade QT 4.5.3 heruntergeladen und erfolgreich kompiliert, nun versuche ich (ohne das Visual Studio Integration Add-In) QT-Funktionen in meinem bereits existierenden Win32 CLI Projekt zu benutzen. Das funktioniert leider nicht. Nicht einmal so etwas funktioniert...
#include <windows.h> #include <qtgui\qwidget.h> #pragma comment(lib, "qtgui4.lib") int main(int argc, char *argv[]) { HWND hWndTest = NULL; hWndTest = FindWindow("BlaKlasse", "Test"); QWidget::find(hWndTest); return 0; }
1>------ Erstellen gestartet: Projekt: Test, Konfiguration: Debug Win32 ------ 1>Kompilieren... 1>Test.cpp 1>Verknüpfen... 1>Test.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static class QWidget * __cdecl QWidget::find(struct HWND__ *)" (__imp_?find@QWidget@@SAPAV1@PAUHWND__@@@Z)". 1>C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\Test\Debug\Test.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise. 1>Das Buildprotokoll wurde unter "file://c:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\Test\Test\Debug\BuildLog.htm" gespeichert. 1>Test - 2 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
-
*CLI im Sinne von Konsolenanwendung
-
Kann man QT vielleicht gar nicht statisch linken?
-
Man kann. Ich habs allerdings selbst noch nicht versucht und kann dir daher keine genaue Anleitung geben.
-
Ich habe QT noch einmal mit dem Switch "-static" kompiliert:
1>------ Erstellen gestartet: Projekt: Test10, Konfiguration: Release Win32 ------ 1>Kompilieren... 1>Test10.cpp 1>Verknüpfen... 1>Test10.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: static class QWidget * __cdecl QWidget::find(struct HWND__ *)" (?find@QWidget@@SAPAV1@PAUHWND__@@@Z)". 1>C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\Test10\Release\Test10.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise. 1>Das Buildprotokoll wurde unter "file://c:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\Test10\Test10\Release\BuildLog.htm" gespeichert. 1>Test10 - 2 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
-
In der Datei steht der String
-> ?find@QWidget@@SAPEAV1@PEAUHWND__@@@Z
und in der Fehlermeldung
-> ?find@QWidget@@SAPAV1@PAUHWND__@@@ZWas hat das überhaupt zu bedeuten?
-
Das die die Methode QWidget::find nach dem NameMangling.