2

试图让 GtkAda 工作。没有自己编译lib,遇到了很多问题,最后在网上找到了一个预编译的库。当然,即使将它添加到我的路径后,GPS 也没有找到它......

所以我手动将它添加到我的项目中,GPS 开始编译。这只是一个简单的例子,看看是否一切正常。刚开始学编程。

WITH Gtk.Main ;          
USE Gtk.Main ;
WITH Gtk.Window ;        
USE Gtk.Window ;
WITH Gtk.Enums ;         
USE Gtk.Enums ;

PROCEDURE MaFenetre IS
win : Gtk_window ;
BEGIN
Init ;
Gtk_New(win,Window_Popup) ;
win.show ;
Main ;
END MaFenetre ;

这给了我这个错误:

gnatlink /Users/laurentlutgen/GPS/mafenetre.ali -o
/Users/laurentlutgen/GPS/mafenetre
架构 x86_64 的未定义符号:
“_ada_c_enum_value_size”,引用自:
.
.
.
“_pango_tab_array_new”,引用自:
pango -tabs.o 中的 pango _tabs__pango_new
ld:未找到架构 x86_64
collect2 的符号:错误:ld 返回 1 退出
状态 gnatlink:调用 /usr/local/gnat/bin/gcc 时出错
gnatmake: *链接失败。
[2013-08-01 21:16:46] 进程以状态 4 退出(经过时间:09.38 秒)

编译器抱怨的文件列表很长。

任何人都知道如何解决这个问题。

我使用来自 AdaCore for MacOS X 的最新版本 gnat (2013)。我使用 MacOS 10.8。
GtkAda 库是 xadalib 2012。

谢谢

洛朗

4

2 回答 2

2

据我所知,gnatlink没有通过链接所需的库。您说您手动将 GtkAda 添加到您的项目中。通过这样做,您可能错过了*.gprGtkAda 文件中指定的所有链接器选项,因此您的二进制文件不会链接到 GTK+ 库。

我建议你尝试让 GPS 找到已安装的 GtkAda 项目文件。您可以通过ADA_PROJECT_PATH在启动 GPS 之前进行设置来做到这一点。如果 GtkAda 位于 GNAT GPL 的默认路径中,它看起来像这样:

$ export ADA_PROJECT_PATH="/usr/local/gnat/lib/gnat"
$ gps

您说您使用的是在 Internet 上找到的预编译二进制文件。您知道 GtkAda 与 GNAT GPL 编译器捆绑在一起吗?您应该使用它,除非您想使用 gtk-quartz 作为后端(不需要 X11)。如果是这种情况,您可能会发现我编写的使用 gtk-quartz 编译 GPS 的说明很有帮助(正如 Simon 已经指出的那样)。

如果你愿意,你可以试试我的GPS 端口到 OSX。默认情况下,它能够加载*.gpr与 GNAT GPL 捆绑的文件。在使用页面上,您可以找到如何更改ADA_PROJECT_PATH如果您将 GNAT 安装在其他地方的说明。

如需进一步帮助,您应该发布*.gpr项目文件。

编辑:

我的立场是正确的:无论出于何种原因,GtkAda 实际上并未包含在 GNAT GPL 发行版中。由于 XmlAda 包含在要链接的项目中,我确信 GtkAda 也是如此,但事实并非如此;所以使用 XAdaLib 似乎是最简单的选择。您必须指向ADA_PROJECT_PATHXAdaLib 的安装目录,而不是通常的 GNAT 安装目录才能使用 GtkAda。

于 2013-08-02T09:00:42.073 回答
1

据我所知,AdaCore for x86 的 GPL 版 GNAT 都没有生成64 位代码的能力。我想我在某处读到过类似的东西,但不记得在哪里。


这个问题也出现在 Doom3 的 Ada 端口,所以如果你能找到他,他可能肯定知道。

于 2013-08-02T07:00:47.813 回答