0

2 つのソース ファイルがあり、1 つは D プログラミング言語で記述され、もう 1 つは C プログラミング言語で記述されているとします。D ソースは DMD (Digital Mars D-Compiler) でコンパイルし、C ソースは GCC コンパイラでコンパイルします。

その結果、別のソースから作成された 2 つの .o (オブジェクト) ファイルが作成されます。これら 2 つのファイルを 1 つの実行可能ファイルにリンクすることはできますか?

4

1 に答える 1

0

それは多くのことに依存します。引数の処理にはさまざまな方法があります。呼び出し元がそれらを設定し、呼び出し先がクリーンアップします (Windows の Pascal スタイル、よりコンパクト)。または、呼び出し元がセットアップとクリーンアップを行います (C スタイル、呼び出しサイトごとにクリーンアップが繰り返されるため、より多くのスペースを使用します)。引数は、値または参照によって渡すことができます。データ (特に配列と構造体) は、メモリ内で異なる方法で配置できます。Dのホームページをざっと見てみると、不変データやネイティブ連想配列のようなものがあり、Cで一致させる必要があります(おそらくDのランタイムでリンクする必要があり、システムのCライブラリで構築されていない限り、かなりの痛み)。等々。もしも物事がどのように行われるかの詳細を知っていれば、必要な接着剤と欠落しているコンパイラサポート関数を確実に提供できますが、それは簡単ではありません. GCC コンパイラの場合、役立つ保証と共通点がありますが、関連のないコンパイラの場合は、おそらくギャンブルです。Clang の目的の 1 つは GCC との互換性であるため、LLVM ベースのD コンパイラがあり、gcc で動作する可能性が高いと思います。

于 2013-01-20T20:25:56.923 に答える