問題タブ [dmd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
473 参照

macos - OSX10.6.8にDMD2.060をインストールできません

人生で初めてDを試す予定です。OS X 10.6.8(Snow Leopard)を実行しているMacBookProを持っています。

Dダウンロードページに移動し、OSX用のdmd2.060インストーラーのリンクをクリックしました。それを開いて、その中の「DMD2.pkg」ファイルをダブルクリックしました。インストーラーは、「このパッケージはMac OS X Leopard(10.5)のみを対象としています」という行を含むテキストを思い付きました。OS X 10.6のバージョンを見つけようとしましたが、見つからなかったため、警告を無視して[続行]をクリックしました。

契約と質問をクリックし、それが完了すると、インストーラーは次のメッセージを表示しました。

インストールに失敗しました。インストーラーでエラーが発生したため、インストールが失敗しました。ソフトウェアの製造元に問い合わせてください。

フォーラムの誰かが、Dをインストールしようとしたときにコンソールアプリを実行することを提案しました。それを試したところ、次のメッセージが表示されました。

私はdigitalmars.D.learnフォーラムでそれについて尋ねました。それが最も適切なフォーラムであったかどうかはわかりませんが、私は学び始めたばかりなので、そこに置きました。また、トラッカーにバグレポートを提出しました。バグレポートまたは自動生成された投稿をdigitalmars.D.bugsで確認できますが、どちらもまだ応答がありません。

誰かがDVMという名前のサードパーティプログラムを使用することを提案しましたが、私はそれについて少し気が進まないように感じています。コンパイラをインストールするためだけに、ドキュメントやダウンロードページAFAIKのどこにも記載されていないサードパーティのプログラムをインストールする必要がある理由がわかりません。

なぜこれが起こっているのか、私がそれについて何をすべきかを誰かが知っていますか?

編集:誰かがコメントで「vpnclient」に言及しました。以前の仕事では、CiscoVPNClientをインストールしていました。しかし、1年以上使用しておらず、少なくとも数か月前に削除しました。どのバージョンの詳細を覚えていませんが、誰かが知る必要がある場合は、次に自宅のコンピューターにアクセスしたときにそれを推測することができます。

編集2:上記のコメントは部分的に間違っています。1年以上使用していませんが、コンピュータにCiscoVPNClient4.9.01.0180がまだあります。

編集3: VPNClientを削除しようとしましたが、それでも同じ問題が発生します。VPNClientが問題と関係があるかどうかはまだわかりません。

0 投票する
1 に答える
324 参照

d - コードがDMDとGDCの両方でコンパイルされることを確認する必要がありますか?

部分的に同等の質問だと思います。DMDでコンパイルするコードは、すべての状況でGDCで自動的にコンパイルする必要がありますか?

私は、ubuntu 10.4(循環依存、ため息)リポジトリから最新バージョンのGDCをインストールする際に問題が発生しているので質問します。

0 投票する
1 に答える
2193 参照

linker - DMD で静的ライブラリをコンパイル/リンクする方法

DMD を使用して静的ライブラリを構築するときはいつでも、それを自分のアプリケーションにリンクすることができ、正常にコンパイルされますが、アプリケーションでライブラリが呼び出されるたびに、次のようになります。

私が行うライブラリを構築するために

アプリケーションを構築するため

私は何を間違っていますか?


アップデート

Vibe.d を libvibe.d-dmd.a としてコンパイルする

コード例:

サンプルのコンパイル

そしていくつかの gdb 出力:

0 投票する
1 に答える
123 参照

d - redBlackTreeテンプレートのインスタンス化中にエラーが発生しました

charsを使用してRedBlackTreeコンテナをインスタンス化するのに問題がありますが、intsで機能します。

DMD32Dコンパイラv2.060を使用しています。

何かご意見は?ありがとう。

0 投票する
1 に答える
121 参照

d - 引数のvoid*配列を静的型に変換する

次のようなクラスがある場合:

Cvoidポインターの配列をそれぞれの型(型がで定義されParameters、の長さがargumentsの長さに等しいParameters)に変換してから、関数を呼び出すにはどうすればよいですか?

次のようなタプルを使用してこれを実行しようとしました。

indexただし、コンパイラが「コンパイル時に変数を読み取ることができない」と文句を言うため、これはコンパイルされません。何か案は?

0 投票する
3 に答える
1025 参照

windows - SQLite と DMD の静的リンク (Windows x86)

成功せずに sqlite3 と静的にリンクしようとしました。「etc.c.sqlite3」ヘッダーと sqlite3 アマルガムを使用しています。.lib ファイルを作成するために、VC++ と MinGW-gcc の両方を試しましたが、どちらもソース ファイルを正常にコンパイルしましたが、どちらも COFF オブジェクト形式を生成します (DMD が使用する optlink は OMF で動作します)。「digitalmars.D」に関する大量の投稿を読んだ後、いくつかの異なる解決策を試しました。

オブジェクト変換:

  • GCC で作成した lib ファイルを変換しようとしたところ、__divdi3 や __muldi3 などの未定義のシンボルが生成され、これを解決できませんでした。

  • また、sqlite3.oファイルを* .objに変換してから、digitalmars 'lib.exe'を使用するためにこれを試みました-同様に失敗しました

  • VC++ で生成されたライブラリで objconv を実行しようとすると、「SQLite.lib はインポート ライブラリです」という理由で失敗します。

暗示:

  • プリコンパイル済みの DLL を sqlite.org からダウンロードして implib を使用すると、lib ファイルが生成されますが、静的ライブラリにリンクしても、同じ sqlite エラー (未定義記号_sqlite3_open, _sqlite3_errmsg, _sqlite3_close...

coffimplib:

  • VC++ で作成されたライブラリ ファイルで coffimplib を使用すると、プログラムはほとんど空のファイル (~2KB) を生成します。このファイルにはゴミ (つまり、シンボルはまったくなく、ほとんどが 'null' 値のみ) しか含まれていません。

  • GCCで作成したライブラリで同じことをすると、coffimplibは「インポートライブラリではありません」と文句を言い、変換されたライブラリファイルは生成されません。

DMC を使用して sqlite3 合併をコンパイルすると、大量のエラーが発生してコンパイルが失敗します。ここで私はどこにも行き詰まっていますが、これを解決するためのアイデアやヒントはありますか?

注: DLL を使用したくありませんが、sqlite と静的にリンクします (実行可能サイズの問題のため)。

0 投票する
2 に答える
1465 参照

d - DランタイムなしでDアプリケーションをコンパイルするには?

私はこれを永遠に理解しようとしてきました、そしてそれは私を悩ませ始めています. D ランタイム ライブラリを理解しています。それが何であるか、それが何をするか。また、それなしで D アプリをコンパイルできることも理解しています。XoMBのように。XoMB には独自のランタイムが定義されていますが、必要がなければ独自のランタイムを作成する必要がない場合もあります。私が使用している DigitalMars D コンパイラ (dmd) は、プログラムで必要なものに応じて特定のものへの参照を発行するなど、ランタイムの舞台裏で多くのことを行うことを理解しています。そしてまた、すべてのプログラムのためのもの。したがって、これらを自分で定義する必要があります。私は実験することに決めました。つまり、リンカーが吐き出すエラーがどんどん少なくなるということです。テストのために、完全な必要最小限のアプリをコンパイルしたいだけです。ランタイムなしで物事を機能させるだけです。または実行時間をできるだけ少なくします。これが私の単一のソースファイルです。

私は次のようにコンパイルします: dmd -c main.d -defaultlib=

次にリンクします: link main.obj

そして、これは私が得るエラーです: OPTLINK: 警告 23: スタックがありません & OPTLINK: 警告 134: 開始アドレスがありません

開始アドレスなしエラーを取り除くために main を _main にチェーンしようとしたことがわかりますが、とにかく役に立ちませんでした。これらの最後の 2 つのエラーを解決するにはどうすればよいですか? もし私がそれを機能させることができれば、より多くの機能を機能させるために実装する必要があるものを調べることができると思います. しかし、誰かが私を助けてくれるなら、それは非常にありがたいです!

0 投票する
1 に答える
302 参照

d - 構造体のopCmpおよびopEqualsをオーバーライドできません

Dのドキュメントから:

または、autorefパラメーターを使用して単一のテンプレート化されたopEquals関数を宣言することもできます。

<...>

構造体がopCmpメンバー関数を宣言する場合は、次の形式に従う必要があります。

では、なぜ次のコードはコンパイルに失敗するのですか?

DMDの出力は次のとおりです。

0 投票する
1 に答える
1459 参照

debugging - GDC と DMD の選択

D でのプログラミングは初めてです。DMD (2.061) または GDC (4.6、4.7、または 4.8、スナップショット) を選択することの長所と短所は何ですか。また、どの GDC バージョンを選択すればよいですか? GCC-4.8 と GDC-4.8 の最新のスナップショットを正常に作成し、hello world プログラムをコンパイルしました。

これまでのプロについての私の考えは次のとおりです。

  • GDC : より多くのプラットフォーム、ランタイム パフォーマンス
  • DMD : コンパイルのパフォーマンス、さらにテスト済み?

GDB を介したデバッグ サポートについてはどうですか? GDC と DMD で違いはありますか?

0 投票する
1 に答える
543 参照

gcc - ハード化された GCC を使用する Ubuntu 12.10 64 ビットで DMD が生成する実行可能ファイルのセグメンテーション違反

Ubuntu 12.10 の構成で DMD 2.061 を動作させるのに問題があります。

次のスクリプトを使用して最初にインストールするとき

すべて正常に動作します。

しかし...

次に、いくつかのUbuntu PPAからお気に入りのソフトウェアをインストールした後、突然、コードdmdがセグメンテーション違反を生成します。私は多くの追加の PPA を使用しているため、どの PPA がクラッシュの原因であるかを見つけるのは簡単ではありません。デフォルトの(変更されていない)ユーザーでこれを試しました。

具体的にはコマンド

f.d含む場所

としてクラッシュします

次に私が試みたのは、dmd で使用されるすべての動的ライブラリの sha1sum を比較し、次に私のプログラムを比較することでした。

私のテレビシステムにデフォルトでインストールされている、追加のPPAがないものに。

それが判明し/usr/lib/x86_64-linux-gnu/libstdc++.so.6/lib/x86_64-linux-gnu/libgcc_s.so.1異なった。

それで、これらのファイルを元のシステムにコピーし、

LD_PRELOAD=libstdc++.so.6:libgcc_s.so.1

しかし...私はまだ同じsegfaultを取得しています...そして、私は迷っています。そうでなければ、一体何がこの問題を引き起こす可能性がありますか? dmd と私のプログラムによって読み取られる (strace によって収集された) ファイルの比較を開始する必要がありますか?

私のシステムは、gcc、g++ とともに他の場所で動作します。したがって、私の構成が DMD から生成されたコードの脆弱性を発見した可能性があることを期待して、これを投稿しています。

最後に、失敗したシステムのコンパイラ バージョンに関するデフォルトを出力します。

そして私の作業中(追加のPPAなしのUbuntu 12.10)

gdb rdmd実行すると、次のf.dようにクラッシュしgc_init()ます。

最後に、ソースから dmd をビルドしようとしましたが、同じセグメンテーション違反の結果になりました。