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

时间:2016-08-01 12:45:09

标签: gtk mingw glade

我需要安装什么来编译使用gtk2 e文件空间的file.c(用glade 3.8制作)?

我已经安装了与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不起作用之后..对于每个命令,它输出的内容如下:

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

如何使用gtk(C),file.glade解决此问题并编译项目? 你有导游吗?

1 个答案:

答案 0 :(得分:1)

这不完全是一个答案,因为我无法从所提供的信息中弄清楚你的问题究竟是什么。因此,与#34;评论"所允许的相比,我需要更多空间。上面的框(如果主持人对此感到不安,请告诉我,我将删除我的提交内容。)

首先,当你说" MinGW&#34 ;?时,你的意思是什么?你的意思是:

1)您构建了一个合适的MinGW环境并从头开始编译所有代码(例如遵循这些优秀指令(http://ingar.satgnu.net/devenv/mingw32/index.html))

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

3)您正在使用MSys2?

如果你使用Msys2,我会惊讶你的Glade是Gtk +(2),因为AlexPu(MSys2的负责人)告诉我个人他不会创建一个Gtk +(2)变种Glade,因为他认为这会导致与Gtk3变体发生太多冲突。这意味着,在Msys2上,拥有(MinGW)Gtk +(2)兼容Glade的唯一方法是使用MSys2 / AlexPu"从头创建神秘机制"。我们从来没有能够构建,甚至没有使用MSys2的帮助(并且该过程会抛出大量的bash错误)。

因此,一种可能性是你使用带有Gtk2代码的Gtk3 Glade变体,它永远不会起作用,但这不是唯一的问题",见下文。

另外,如果你有合适的MinGW Gtk +机器,你对libs的引用看起来有点不同。例如,我们所有的Win / Gtk +(2)应用程序通常都必须至少具有以下库:

$(#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,并且在调试器日志中它实际上会使用单词" segmentation fault"如果SIGSEGV真的很讨厌,Windows可能不会说什么"显式(空白控制台等),你的GDB可能只看到"有些提及" "一些"问题

此外,如果您使用的是Glade,那么它只是一个xml文件,试图让您的Gtk生活更轻松。 Gtk具有将Glade xml文件解释为虚拟" Gtk代码"的代码。坦率地说,我们发现Glade在很多情况下比它的价值更麻烦,只需通过代码编写GUI更有效率,而且往往并非总是如此。

第三,可以(我们已经完成)使用基于Windows二进制文件的Glade,并链接到其中的库,但是对于Glade库,你仍然需要获得(正确的)Gtk +库。

正如您所看到的,如果不了解您的设置,很难提供准确的答案。

我强烈建议您不要从命令行运行。它可以做到,但是那些需要“连接”的东西太多了。让Gtk / Glade / GCC等正确地相互交谈。我强烈建议安装Code :: Blocks(http://www.codeblocks.org/);它是免费的和优秀的(或一些体面的IDE)。然后,您可以非常轻松地设置路径/依赖项(在确认了dll' s / lib&s以及它们的确切路径,版本,tc之后)。

此外,CodeBlock社区在集成外部软件包(如Glade / GCC / Gtk等)方面拥有丰富的经验。

部分(而非全部)MinGW dll将包含版本号,右键单击dll,单击属性并查找,具体取决于您的操作系统,"版本"或"详细信息"其中保存了dll的版本号。所有的Gtk都会。通常,文件名也包含版本号"指示符",但有时候最好确定。

顺便说一句,如果你的Glade有一个ver num> 3.8.5,然后几乎肯定是它的Gtk3。

顺便说一下,你有没有对所有内容进行编码"正确"并且提供了所有的库等等,但是一些库是Gtk2而其他库是Gtk3(并且没有其他主要问题),那么Gtk本身就会不允许它,并告诉你它不会接受"混合2和3"

......和以前一样,我们对MSys2的体验一直不愉快。我们发现投资大约一天左右并遵循" Ingar的指示" (http://ingar.satgnu.net/devenv/mingw32/index.html)将为您提供从头开始构建的具有GCC / Gtk等功能的Windows MinGW基础架构,并且您可以完全控制并了解所有内容以及所有内容等等。