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.