使用 cygwin : invalid argument 在 c 中编译 GTK-app

标签 c cygwin gtk3 gtkmm

我以为安装后就一切正常了

 MinGW
 gtk3
 gtkmm
 cygWin 

而且我编译普通的简单文件也没问题。我对诸如

之类的命令也没有问题
 $ pkg-config --cflags --libs gtk+-2.0

输出

 -mms-bitfields -IC:/gtkmm/include/gtk-2.0 -IC:/gtkmm/lib/gtk-2.0/include 
 - IC:/gtkmm/include/atk-1.0 -IC:/gtkmm/include/cairo -IC:/gtkmm/include/gdk-pixbuf 
 -2.0 - IC:/gtkmm/include/pango-1.0 -IC:/gtkmm/include/glib-2.0 -IC:/gtkmm/lib/glib
 -2.0/include -IC:/gtkmm/include -IC:/gtkmm/include/freetype2 
 -IC:/gtkmm/include/libpng14  -LC:/gtkmm/lib -Lc:/devel/dist/win32/libpng-1.4.3-1/lib 
 -lgtk-win32-2.0 -lgdk-win32-2.0 -  latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 
 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpng14 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule
 -2.0 -lgthread-2.0 -lglib-2.0 -lintl

但是当我尝试从教程中编译一个简单的 gtk-app 时

 $ gcc c_gui.c -o c_gui `pkg-config --cflags --libs gtk+-2.0`

我从 cygwin 终端窗口收到错误消息:

 :gcc.exe: error:  -LC:/gtkmm/lib: Invalid argument

可能有什么问题?

最佳答案

您的 pkgconfig 似乎有问题。它不应该返回 DOS 风格的路径。如果我在上面运行你的确切命令,我得到:

-D_REENTRANT -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/-I/usr/include/freetype2 -I/usr/include/libpng15 -我/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/harfbuzz -lgtk-x11-2.0 -lgdk-x11- 2.0 -latk-1.0 -lpangocairo-1.0 -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lgdk_pixbuf-2.0 -lpangoft2-1.0 -lgio-2.0 -lcairo -lpixman-1 -lGL -lpthread -lxcb-shm -lxcb-render - lXrender -lXext -lXdamage -lX11-xcb -lxcb-glx -lXfixes -lX11 -lxcb -lXau -lXdmcp -lharfbuzz -lpango-1.0 -lfontconfig -lgmodule-2.0 -lgobject-2.0 -lffi -lglib-2.0 -lintl -liconv - lpcre -lempat -lfreetype -lbz2 -lpng15 -lm -lz

我怀疑这是因为您试图混合使用 MinGW 和 Cygwin。它们并不总是能很好地协同工作。

我的/usr/lib/pkgconfig/gtk+-2.0.pc 看起来像这样:

prefix=/usr
exec_prefix=/usr
libdir=/usr/lib
includedir=${prefix}/include
target=x11

gtk_binary_version=2.10.0
gtk_host=x86_64-unknown-cygwin

Name: GTK+
Description: GTK+ Graphical UI Library (${target} target)
Version: 2.24.23
Requires: gdk-${target}-2.0 atk cairo gdk-pixbuf-2.0 gio-2.0 pangoft2
Libs: -L${libdir} -lgtk-${target}-2.0 
Cflags: -I${includedir}/gtk-2.0 

这对我来说很合理。

关于使用 cygwin : invalid argument 在 c 中编译 GTK-app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23934671/

相关文章:

c - 使用 typedef 的 C 枚举类型的值

c - 将数组从函数传递到 main

c++ - 非常简单的应用程序失败,来自 Eclipse 的 "multiple target patterns"

linux - 使用 TinyCore 的窗口中不显示 GTK 绘图区小部件

c - 加速器未显示在 GtkCheckMenuItem 中

c++ - 如何知道用于构建 linux 的 gcc 版本?

c - C 中两个数的 L.C.M

c++ - wxWidgets + Windows 上的 Cygwin

windows - 无法在 Windows/Cygwin 上使用 perl 确定文件创建时间

c - 在 Windows 10 上安装 GTK for c?