Frage

Ich versuche, native Windows-API zu verwenden, mit Qt mingw Toolset verwenden. Es gibt Link Probleme mit einigen Funktionen. Was geschieht? Ist das ein Bug mit mingw Namen Mangeln?

#ifdef Q_WS_WIN
    HWND hwnd = QWidget::winId();
    HDC hdcEMF  = CreateEnhMetaFile(NULL, NULL, NULL, NULL ) ;
    Rectangle(hdcEMF,100,100,200,200);
    HENHMETAFILE hemf = CloseEnhMetaFile(hdcEMF);
    OpenClipboard(hwnd);
    EmptyClipboard();
    SetClipboardData(CF_ENHMETAFILE,hemf);
    CloseClipboard();
#else   

Die Fehler:

undefined reference to `CreateEnhMetaFileW @ 16'

undefined reference to `Rechteck @ 20'

undefined reference to `CloseEnhMetaFile @ 4'

War es hilfreich?

Lösung

Die Funktionen CreateEnhMetaFileW() und CloseEnhMetaFile() sind in der statischen Bibliothek Gdi32.lib definiert, so dass Sie müssen sicherstellen, dass gegen verknüpfen. Versuchen Sie verwenden, um das Ende der Befehlszeile hinzugefügt -lgdi32 zu kompilieren. Wenn das nicht funktioniert, könnten Sie den vollständigen Pfad zu Gdi32.lib durch Hinzufügen -L/path/to/folder/containing/the/library -lgdi32 stattdessen angeben.

Andere Tipps

Wenn Sie Windows-API in einem Qt-App nutzen wollen, dann gibt es keine Notwendigkeit WinAPI Funktionen extern "C" zu erklären, nur sind:

#include <qt_windows.h>

In der Projektdatei (.pro) fügen Sie die Bibliotheken, die Sie verwenden:

LIBS += -luser32 -lshell32 -lgdi32

Es ist möglich, dass die Funktionen enthalten sind, aber aufgrund der C ++ Annahme verstümmelt zu werden.

Schauen Sie in die extern C {} Erklärung. Es ist beabsichtigt, Funktionen zu deklarieren, die für Polymorphismus / Überlastung nicht nennen verstümmelt berücksichtigen werden sollen. (IE zwei Funktionen mit dem gleichen Namen).

@torn Ihre Lösung für mich gearbeitet.

ich einen win32 api Anruf in meiner qt Anwendung verwenden wollte.

die # include die # include your-win32-api-Header

und schließlich die LIBS + = -llibrary Namen.

Beachten Sie, dass Sie -L für die richtigen Pfade haben könnte geben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top