license full creator compiler windows qt mingw

full - qt windows requirements



Problema de enlace de la API nativa de Windows en Qt+win32+mingw (4)

Estoy intentando usar la API nativa de Windows con Qt usando el conjunto de herramientas mingw. Hay problemas de enlace con algunas funciones. ¿Lo que pasa? ¿Es esto un error con el nombre de mingw?

#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

Los errores:

referencia indefinida a `CreateEnhMetaFileW @ 16 ''

referencia indefinida a `Rectangle @ 20 ''

referencia indefinida a `CloseEnhMetaFile @ 4 ''


Es posible que las funciones estén incluidas, pero se rompan debido a la suposición de C ++.

Mire en la declaración externa C {}. Tiene la intención de declarar funciones que no deberían tener un nombre mutilado para dar cuenta del polimorfismo / sobrecarga. (IE dos funciones con el mismo nombre).


Las funciones CreateEnhMetaFileW() y CloseEnhMetaFile() se definen en la biblioteca estática Gdi32.lib, por lo que debe asegurarse de vincularlas. Intente agregar -lgdi32 al final de su línea de comando que está utilizando para compilar. Si eso no funciona, puede que tenga que especificar la ruta completa a Gdi32.lib agregando -L/path/to/folder/containing/the/library -lgdi32 en -L/path/to/folder/containing/the/library -lgdi32 lugar.


Si desea usar la API de Windows en una aplicación Qt, entonces no es necesario declarar las funciones de WinAPI extern "C", solo incluya:

#include <qt_windows.h>

En su archivo de proyecto (.pro) agregue las bibliotecas que usa:

LIBS += -luser32 -lshell32 -lgdi32


@torn tu solución funcionó para mí.

Quería usar una llamada api win32 en mi aplicación qt.

el #include el #include your-win32-api-header

y finalmente el nombre LIBS + = -library.

Tenga en cuenta que es posible que también deba dar -L por las rutas correctas.