私はFE製品OrcaFlexでこれをかなり行いました。 DelphiのCコードにリンクするには、静的または動的の2つのオプションがあります。分散とバージョン管理がはるかに簡単になるため、静的にリンクします。しかし、それを静的に動作させることは実際には非常に難しいことであり、デルファイのいくつかの文書化されていない側面に頼らざるを得ません。
あなたのニーズに合わせてダイナミックリンクが最適であると思われます。基本的には、CコードをコンパイルしてDLLにリンクする必要があります。これを行うには、Borland Cコンパイラを使用することをお勧めします。これを行うには、フリーコマンドラインバージョンBCC55を使用できます。 Borland Cを使用する利点は、Delphiのように8087浮動小数点ユニットについても同じ前提があることです。 MSVCを使用して構築すると、MSは浮動小数点例外を発生させないことを選択したことに気付くでしょう。 Borland Cは浮動小数点例外を発生させます。これはちょっとしたコーナーケースですが、堅牢にする必要がある製品を出荷しようとする場合は適切です。
Cコードは、デフォルトではCの呼び出し規約を使用していることを知っておく必要があります。あなたは外部ルーチンをcdecl呼び出し規約として宣言することによってそれをDelphiに持ち込みます。
もう1つ注意が必要なことは、2つのモジュール間に明確なインターフェースを定義することです。例外がモジュール境界を超えないようにする必要があります。また、境界線に特殊な型(Delphi文字列など)を渡さないようにする必要があります。したがって、文字列の場合は、PChar(または、より良いPAnsiCharまたはPWideCharを使用して、Delphi 2009以降にアップグレードするときに意味が変わらないことを確認してください)。
** Mathematica **を使ってCコードを作成する予定ですか? –
@Belisariusはい。 –
@Chrisあなたの答えをありがとう。 MathematicaからCに移行するための変換ソフトウェア/機能へのポインタを投稿してください。 –