我正在尝试使用GDC编译D程序。我目前使用的是Windows XP SP3,我使用的是从这里下载的"Windows X86 32位(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
GDC窗口构建真的被破坏了。对于最新版本,我们只检查了代码是否编译。我们甚至没有对这些释放物进行烟雾测试。我们没有正确测试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);
所以OutBuffer
或sprintf
有一些问题。我必须再做一些调试才能找到真正的问题。
Bug报告:http://bugzilla.gdcproject.org/show_bug.cgi?id=201