1

GDC を使用して D プログラムをコンパイルしようとしています。私は現在 Windows XP SP3 を使用しており、http: //gdcproject.org/downloads (一番下のリンク) からダウンロードした「Windows X86 32bit (i686-w64-mingw32)」パッケージを使用しています。したがって、バイナリを解凍して gdc を呼び出して、次のような単純なプログラムをコンパイルすると:

import std.stdio;

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

たくさんのアセンブラー エラーが発生します。

http://pastebin.com/1kwU10Tz

へのリンクに「サポートされていないアルファ ビルド」と書かれていることは知っていますが、このメッセージの意味がよくわかりません (おそらく教えていただけますか)。それにもかかわらず、アーカイブから以前のバージョンをダウンロードしようとしましたが、すべて同様のエラーで失敗しました。

これを解決する方法はありますか?それとも、ここで重要な点が欠けていますか。

編集: コンパイラによって生成されたアセンブリ コードは次のとおりです: http://pastebin.com/w5q0rNNd

4

1 に答える 1

2

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。本当の問題を見つけるには、さらにデバッグを行う必要があります。

バグレポート: http://bugzilla.gdcproject.org/show_bug.cgi?id=201

于 2015-10-26T18:04:23.243 に答える