Собственная проблема с Windows API на Qt + win32 + mingw - PullRequest
2 голосов
/ 06 ноября 2008

Я пытаюсь использовать собственный Windows API с Qt, используя набор инструментов mingw. Есть проблемы со связью с некоторыми функциями. Что просходит? Это ошибка с искажением имени 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   

Ошибки:

неопределенная ссылка на `CreateEnhMetaFileW @ 16 '

неопределенная ссылка на `Rectangle @ 20 '

неопределенная ссылка на `CloseEnhMetaFile @ 4 '

Ответы [ 4 ]

4 голосов
/ 06 ноября 2008

Функции CreateEnhMetaFileW() и CloseEnhMetaFile() определены в статической библиотеке Gdi32.lib, поэтому вы должны обязательно с этим связаться. Попробуйте добавить -lgdi32 в конец командной строки, которую вы используете для компиляции. Если это не сработает, вам, возможно, придется указать полный путь к Gdi32.lib, добавив вместо него -L/path/to/folder/containing/the/library -lgdi32.

3 голосов
/ 08 сентября 2010

Если вы хотите использовать Windows API в приложении Qt, тогда не нужно объявлять функции WinAPI вне "C", просто включите:

#include <qt_windows.h>

В вашем файле проекта (.pro) добавьте библиотеки, которые вы используете:

LIBS += -luser32 -lshell32 -lgdi32
0 голосов
/ 11 января 2011

@ порванное твоё решение сработало для меня.

Я хотел использовать вызов API win32 в своем приложении qt.

#include #include your-win32-api-header

и, наконец, имя библиотеки LIBS + =.

Обратите внимание, что вам, возможно, придется указать -L и для правильных путей.

0 голосов
/ 06 ноября 2008

Возможно, что функции включены, но они искажены из-за предположения C ++.

Посмотрите на внешнее объявление C {}. Он предназначен для объявления функций, имена которых не должны быть искажены для учета полиморфизма / перегрузки. (Т.е. две функции с одинаковым именем).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...