この-L
フラグは、特定のディレクトリを検索パスに追加するようリンカーに指示します。
-l
特定のライブラリにリンクするように指示し、検索パスを検索してそのライブラリを見つけます。
DMD では、フラグを使用してリンカーにフラグを渡す必要があります-L
。絶対パスまたは相対パスのいずれかを取ることができますが、パスは、コンパイラの実行元からの相対パスである必要があります。したがって、相対パスを使用する場合は、常に同じディレクトリからコンパイラを実行する必要があります(通常、ビルド コマンドは常に同じディレクトリから実行するため、これは通常は問題になりませんMakefile
)。
最も一般的なのは、システムにインストールされているライブラリには絶対パスを使用し、プロジェクトに固有のライブラリには相対パスを使用することです。
したがって、ライブラリがある場合は、myzlib/lib/libz.a
に渡し-L-Lmyzlib/lib -L-lz
ますdmd
。
myzlib/lib
次に、リンカーの検索パスに追加しlibz.a
、その検索パスで検索します(リンカーは、次の部分を取り、-l
その前に lib を追加.a
し、最後にサフィックスを追加して、探しているライブラリを取得することを知っていますのために)。
リンカ フラグを に追加できますが、おdmd.conf
勧めしません。のフラグdmd.conf
は、dmdがすべてのプログラムで常に使用するものです。したがって、実際には、すべてのプログラムで使用されるフラグのみが必要です。
むしろ、それらを dmd に直接フィードします (コマンドライン上または a の一部としてMakefile
)。
ヘッダー ファイルに関しては、必要な宣言をファイルに複製する必要があり.d
ます。
ヘッダー ファイルは、リンカーではなく、C または C++ コンパイラによって使用されます。D は、C または C++ で使用するのと同じリンカを共有しますが、そのコンパイラはdmd
であり、gcc
.
したがって、C 宣言を D ファイルに複製する必要があります。これを行う最も簡単な方法はhtod
utilityを使用することですが、Windows または Wine でのみ機能します。
とにかく、.d
ファイルで使用する C 宣言を宣言し、extern(C)
.