Pregunta

Estoy tratando de 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 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 '

¿Fue útil?

Solución

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 la línea de comando que está utilizando para compilar. Si eso no funciona, es posible que deba especificar la ruta completa a Gdi32.lib agregando -L / path / to / folder / contiene / the / library -lgdi32 en su lugar.

Otros consejos

Si desea utilizar la API de Windows en una aplicación Qt, no es necesario declarar las funciones WinAPI externas '' C '', solo incluya:

#include <qt_windows.h>

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

LIBS += -luser32 -lshell32 -lgdi32

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

Mire la declaración externa de C {}. Su objetivo es declarar funciones que no deben ser nombradas para explicar el polimorfismo / sobrecarga. (IE dos funciones con el mismo nombre).

@torn su 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 + = -llibrary.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top