我正在尝试使用mingw工具集使用Qt本机Windows API。某些功能存在链接问题。怎么了?这是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'

有帮助吗?

解决方案

函数 CreateEnhMetaFileW() CloseEnhMetaFile()在静态库Gdi32.lib中定义,因此您必须确保链接。尝试将 -lgdi32 添加到您用于编译的命令行的末尾。如果这不起作用,您可能必须通过将 -L / path /添加到/ folder / contains / the / library -lgdi32 来指定Gdi32.lib的完整路径。

其他提示

如果您想在Qt应用程序中使用Windows API,则无需声明WinAPI函数extern“C”,只需包含:

#include <qt_windows.h>

在项目文件(.pro)中添加您使用的库:

LIBS += -luser32 -lshell32 -lgdi32

可能包含这些函数,但由于C ++假设而导致错误。

查看extern C {}声明。它旨在声明不应该被命名的函数来解释多态/重载。 (IE两个具有相同名称的函数)。

@torn你的解决方案为我工作。

我想在我的qt应用程序中使用win32 api调用。

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

最后是LIBS + = -llibrary名称。

请注意,您也可能必须为正确的路径提供-L。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top