【问题标题】:GCC, GTK on Windows10 ld.exe: cannot find -ldwmapiWindows10 ld.exe 上的 GCC、GTK:找不到 -ldwmapi
【发布时间】:2021-11-18 07:24:21
【问题描述】:

我对这一切都很陌生,所以如果我在这篇文章中放了无用的信息,或者忘记了有用的信息,请原谅。

我正在尝试在 Windows10 上使用 C 语言中的 GTK 编写 GUI。所以我安装了 Msys2 以便使用 GTK。在 Msys2 中,我安装了基本的 pkgs 和所有的 GTK pkgs。然后在 VScode 上我安装了一个扩展来链接外部库

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "C:\\msys64\\mingw32\\include\\gtk-3.0\\",
                "C:\\msys64\\mingw32\\include\\glib-2.0",
                "C:\\msys64\\mingw32\\include\\pango-1.0",
                "C:\\msys64\\mingw32\\include\\harfbuzz",
                "C:\\msys64\\mingw32\\include\\cairo",
                "C:\\msys64\\mingw32\\include\\gdk-pixbuf-2.0",
                "C:\\msys64\\mingw32\\include\\atk-1.0"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.19041.0",
            "compilerPath": "D:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\bin\\Hostx64\\x64\\cl.exe",
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "windows-msvc-x64"
        }
    ],
    "version": 4
}

这是它的样子,但我相信这并不重要,因为我在 powershell 上手动编译。

这是我编译文件的方式(在 .bat 文件中):

gcc main.c -o mikey.exe -LC:\msys64\mingw32\lib\gtk-3.0 -Wl,-luuid -LC:\msys64\mingw32\lib -lgtk-3 -lgdk-3 -lz -lgdi32 -limm32 -lshell32 -lole32 -ldwmapi -lwinmm -lsetupapi -lcfgmgr32 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lharfbuzz -lcairo -lgobject-2.0 -lglib-2.0 -lintl -IC:\msys64\mingw32\include\gtk-3.0 -IC:\\msys64\\mingw32\\include\\glib-2.0 -IC:\\msys64\\mingw32\\include\\pango-1.0 -IC:\\msys64\\mingw32\\include\\harfbuzz -IC:\\msys64\\mingw32\\include\\cairo -IC:\\msys64\\mingw32\\include\\gdk-pixbuf-2.0 -IC:\\msys64\\mingw32\\include\\atk-1.0  

所有 -l 参数来自:

C:\msys64\mingw32\bin\pkg-config.exe --libs gtk+-3.0

这看起来很糟糕,因为我尝试将 pkg-config 放在 PATH 或 wtv x 上失败)

编译器连续询问-I。

现在编译时出现以下错误:

c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -ldwmapi
collect2.exe: error: ld returned 1 exit status

我知道 dwmapi.dll 存在于我的 System32 文件夹中,但我什至不知道它是否是这里的主题。

我彻底迷路了

如有必要,我的 main.c:

#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
    GtkWidget *window;

    gtk_init(&argc, &argv);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

    gtk_widget_show(window);

    gtk_main();

    return 0;
}

【问题讨论】:

  • 卸载您在C:\mingw 中拥有的任何版本的MinGW,它似乎会妨碍您。 MSYS2 发布了自己的 MinGW。
  • 是的,确实解决了它,谢谢!
  • 如果您可以将其发布为答案以便我标记它,那就太好了

标签: c++ c gcc mingw msys2


【解决方案1】:

不同的 MinGW 版本通常不能很好地协同工作。

由于 MSYS2 发布了它自己的 MinGW,你应该卸载你在 C:\mingw 中的其他版本,或者至少从 PATH 中删除它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-13
    • 2011-06-23
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多