Windows10 ld.exe 上的 GCC、GTK:找不到 -ldwmapi
GCC, GTK on Windows10 ld.exe: cannot find -ldwmapi
我对这一切还很陌生,所以如果我放了无用的信息,或者忘记了有用的信息,请原谅我 post。
我正尝试在 Windows10 上使用 C 中的 GTK 编写 GUI。所以我安装了 Msys2 以便使用 GTK。在 Msys2 中,我安装了基本的 pkgs 和所有的 GTK pkgs。然后在 VScode 我安装了 link 外部库的扩展
{
"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。
Sooooo 现在编译时出现以下错误:
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;
}
不同的 MinGW 版本通常不能很好地协同工作。
由于 MSYS2 自带 MinGW,您应该卸载 C:\mingw
中的其他版本,或者至少将其从 PATH
中删除。
我对这一切还很陌生,所以如果我放了无用的信息,或者忘记了有用的信息,请原谅我 post。
我正尝试在 Windows10 上使用 C 中的 GTK 编写 GUI。所以我安装了 Msys2 以便使用 GTK。在 Msys2 中,我安装了基本的 pkgs 和所有的 GTK pkgs。然后在 VScode 我安装了 link 外部库的扩展
{
"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。
Sooooo 现在编译时出现以下错误:
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;
}
不同的 MinGW 版本通常不能很好地协同工作。
由于 MSYS2 自带 MinGW,您应该卸载 C:\mingw
中的其他版本,或者至少将其从 PATH
中删除。