1

我正在尝试使用 GDC 编译 D 程序。我目前在 Windows XP SP3 上,我使用从这里下载的“Windows X86 32bit (i686-w64-mingw32)”包:http: //gdcproject.org/downloads(底部的链接)。因此,当我解压缩二进制文件并调用 gdc 来编译一个像这样的简单程序时:

import std.stdio;

void main() {
     writeln("Hello World. ");
}

我得到一堆汇编错误:

http://pastebin.com/1kwU10Tz

我知道指向“不支持的 alpha 版本”的链接,但我真的不明白这条消息的含义(也许你可以告诉我)。但是,尽管如此,我还是尝试从存档中下载早期版本,但都因类似错误而失败。

有没有办法解决这个问题?还是我在这里遗漏了一些关键点。

编辑:这是编译器生成的汇编代码:http: //pastebin.com/w5q0rNNd

4

1 回答 1

2

GDC windows 版本真的很糟糕。对于最新版本,我们只检查了代码是否可以编译。我们甚至没有对这些版本进行冒烟测试。我们没有正确测试 MinGW 端口的工具,只要我们无法正确测试,完成端口就没有任何用处。我希望这会在今年晚些时候有所改变,但我不会做出任何承诺 ;-) 现在,我从 gdcproject 页面中删除了下载链接。

TL;DR:不要使用 MinGW GDC 构建,它们已损坏。

有关错误消息的一些信息:如果您查看 ASM,您会看到如下名称: __D11TypeInfo_(null)6__initZ

符号名称不能包含括号。在 MinGW 上打印名称时出现问题。在 GDC 中打印这些标识符的代码如下所示: sprintf(name, "_D%lluTypeInfo_%s6__initZ", (unsigned long long) 9 + len, buf.data); 所以OutBufferor有一些问题sprintf。我必须做更多的调试才能找到真正的问题。

错误报告:http ://bugzilla.gdcproject.org/show_bug.cgi?id=201

于 2015-10-26T18:04:23.243 回答