6

サードパーティの Lisp ベースのプログラム (ABC と呼びましょう) と自分で書いた C# プログラム (DEF と呼びましょう) との統合を作成しようとしています。問題は、ABC が C または Fortran で作成されたアセンブリしか呼び出せないことです。そこで私は C の学習を開始し、ABC が私の C dll を呼び出して "hello world" を取得する "hello world" テストを機能させました。明示的な読み込みと GetProcAddress を使用して、C コードから DEF dll を呼び出そうとしました。別の C dll を呼び出した場合は機能しましたが、C# dll を呼び出した場合は機能しませんでした。ここで、C++ を学び、C++ から C# を呼び出して、この素敵な呼び出しチェーンを作成する必要があるのではないかと考えています。

ABC -> C -> C++ -> DEF(C#) -> C++ -> C -> ABC

それが唯一の方法である場合、誰かがいくつかの例などを手伝ってくれますか?

4

2 に答える 2

3

.NET アセンブリを作成するときに、チェックボックスを設定して、アセンブリを COM 相互運用用に登録することができます。これにより、COM を呼び出すことができる任意の言語からアクセスできるようになります。(C はできませんか? C や C++ に触れるのは久しぶりです。)

構成プロパティ -> プロジェクト プロパティのビルド ページ。「COM Interop の登録」を探します。

于 2012-04-26T14:31:41.580 に答える
2

このプロジェクトを使用して、 C# 関数をネイティブ エントリ ポイントとしてエクスポートします。

于 2012-04-26T14:29:19.590 に答える