2012-04-26 14 views
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#を呼び出す必要がある場合、私は疑問に思う:私のCコードからC#DLLのメソッドを呼び出すにはどうすればいいですか?

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

それが唯一の方法なら、誰かがいくつかの例などで私を助けることができますか?

+1

COM interopにc#dllを登録しましたか?私は過去にやったことがあります。 – SouthShoreAK

+0

あなたの質問に答えるのを忘れないでください(答えの下線ボタンの下のフックをチェックしてください)。 – sschrass

答えて

2

this projectを使用して、C#関数をネイティブエントリポイントとしてエクスポートします。

+0

私は実際にこれを稼働させました、ありがとうございました! – AndersJH

3

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

プロジェクトプロパティの[ビルド]ページ。 「Register for COM Interop」を探します。

+0

これは機能しませんでした。 Cはまだdllで手続きアドレスを見つけることができません。 – AndersJH

関連する問題