如何在MinGW上编译使用gtk和file.glade的项目?

如何在MinGW上编译使用gtk和file.glade的项目?,gtk,mingw,glade,Gtk,Mingw,Glade,编译使用gtk2 e file glade(使用glade 3.8制作)的文件.c时,我必须安装什么 我已经用Pacman-S安装了libglade,并尝试用 gcc-export dynamic File.c-o browser$(pkg-config--cflags--libs gtk+-2.0)\$(pkg-config--cflags--libs libglade-2.0) 在这之后,MinGW就不起作用了。。对于每个comand,它会输入输出内容,如: 1367211018[main]

编译使用gtk2 e file glade(使用glade 3.8制作)的文件.c时,我必须安装什么

我已经用Pacman-S安装了libglade,并尝试用 gcc-export dynamic File.c-o browser$(pkg-config--cflags--libs gtk+-2.0)\$(pkg-config--cflags--libs libglade-2.0) 在这之后,MinGW就不起作用了。。对于每个comand,它会输入输出内容,如:

1367211018[main]bash 9420 fork:child-1-分叉进程8876意外死亡,重试0,退出代码0xC0000005,错误号11 bash:fork:重试:无子进程 1368436447[main]bash 9420 fork:child-1-分叉进程3968意外死亡,重试0,退出代码0xC0000005,错误号11 bash:fork:重试:无子进程 1370680659[main]bash 9420 fork:child-1-分叉进程1404意外死亡,重试0,退出代码0xC0000005,错误号11 bash:fork:重试:无子进程 bash:fork:没有子进程

我如何解决这个问题并用gtk(C),file.glade编译项目?
你有什么指导吗?

这不是一个确切的答案,因为我无法从提供的信息中准确地找出你的问题所在。因此,与上面的“评论”框相比,我需要更多的空间(…如果版主对此感到不安,请告诉我,我会记下我的提交)

首先,你说“MinGW”是什么意思?你是说:

1) 您已经构建了一个合适的MinGW环境,并从头开始编译了所有代码(例如,遵循这些()之类的优秀指令)

2) 你下载了一些Glade等的Windows二进制文件

3) 您正在使用MSys2

如果您使用的是Msys2,我会为您的Glade是Gtk+(2)感到惊讶,因为AlexPu(Msys2的负责人)亲自告诉我,他不会创建Glade的Gtk+(2)变体,因为他觉得这会与Gtk3变体产生太多冲突。这意味着,在Msys2上,拥有(MinGW)Gtk+(2)兼容Glade的唯一方法是使用Msys2/AlexPu“从头开始创建神秘机制”。我们从来没有能够构建它,即使在MSys2的帮助下也不行(这个过程会抛出很多bash错误)

因此,一种可能性是您正在使用Gtk3 Glade变体和Gtk2代码,这永远不会起作用,但这不是唯一的“问题”,请参见下文

此外,如果您有适当的MinGW Gtk+机制,您对libs的引用看起来与我们预期的有点不同。例如,我们的所有Win/Gtk+(2)应用程序通常必须至少具有以下LIB:

$(#gtk)\bin\libgtk-win32-2.0-0.dll

$(#gtk)\bin\libgdk-win32-2.0-0.dll

$(#gtk)\bin\libgobject-2.0-0.dll

$(#gtk)\bin\libglib-2.0-0.dll

。。。通常,对于Pango、Cairo等,会有更多

无论您是从头编译,还是“通过MSys2/pacman安装”,这些都应该是相同的

当然,几乎可以肯定的是,还会有其他依赖项,需要“搜索路径”,而且各种东西都必须在您的“路径”上

其次,您的错误消息非常奇怪,并引用了“bash”问题。这听起来更像是您正在使用的类似于MinGW/Unix的shell/系统中的“脚本/指令”问题

它们听起来不像是“正常的Gtk崩溃”。通常,Windows实际上会发出一个SIGSEGV,并且在调试器日志中,它实际上会使用“分段错误”等词。如果SIGSEGV真的很糟糕,Windows可能不会明确地“说什么”(空白控制台等),并且您的GDB可能只看到“某些”问题的“某些提及”

此外,如果您使用的是Glade,那么它只是一个xml文件,试图让您的Gtk生活更轻松。Gtk拥有将Glade xml文件解释为虚拟“Gtk代码”的代码。坦白地说,我们已经发现Glade在很多情况下比它的价值更麻烦,而且仅仅通过代码编写GUI更有效,同样,经常,并不总是如此

第三,可以(我们已经做到了)使用基于Windows二进制文件的Glade,并在其中链接到libs,但对于Glade libs,您仍然需要获得(正确的)Gtk+libs

如您所见,在不了解更多设置的情况下,很难提供准确的答案

我强烈建议您不要从命令行运行。这是可以做到的,但需要“连接”Gtk/Glade/GCC等彼此正确对话的复杂事物太多了。我强烈建议安装Code::Blocks();它是免费的、优秀的(或者一些像样的IDE)。然后,您可以非常轻松地设置路径/依赖项(在确认dll/lib的存在及其确切路径、版本、tc之后)

此外,代码块的社区在集成外部包(如Glade/GCC/Gtk等)方面有着丰富的经验

有些(不是全部)MinGW dll将包含版本号,右键单击该dll,单击“属性”,并根据您的操作系统查找保存dll版本号的“版本”或“详细信息”等。所有的Gtk都会。通常,文件名还包含版本号“indicator”,但有时最好确定

顺便说一句,如果你的沼泽地有一个版本数>3.8.5,那么几乎可以肯定它是Gtk3

顺便说一句,如果您对所有内容都进行了“正确”编码并提供了所有LIB,等等。但是一些LIB是Gtk2,而另一些是Gtk3(并且没有其他重大问题),那么Gtk本身将不允许它,并告诉您它不会接受“混合2和3”


。。。和以前一样,我们对MSys2的体验是不愉快的。我们发现,投资大约一天左右并遵循“Ingar的说明”(Ingar's instructions)()将为您提供一个全新的、功能齐全的Windows MinGW基础架构,并配备GCC/Gtk等,您可以完全控制、了解所有内容的位置和用途等。

构建过程中的某些内容因acce而崩溃