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__@@@Z

    Was hat das überhaupt zu bedeuten?



  • Das die die Methode QWidget::find nach dem NameMangling.


Anmelden zum Antworten