惰天使ロック

原理的にはまったく自在な素人哲学

続・CからC#を呼ぶ

2011年06月10日 | 不良プログラマの夕べに
今日は出勤前に話が解決した(笑)。

昨日のサンプルは「C#からC関数を呼び、その中からC#メソッドを関数として呼び返す」ものだった。つまりこの例だとEXE自体はC#で作っていなければならなかったわけである。

そうではなくてCのEXEから直接C#のDLLにアクセスする場合はどうするか。これはCの側のメイン・プログラムをC++/CLIで作ってやって、そのusing文の中でC#モジュールを指定してやる。C++/CLI自体は「C++のニセモノ」あるいは「文法その他をC++のそれに似せたC#」とでもいうべきもので、CでもC++でもない。ただ、その中からC言語の関数を呼ぶことは普通にできるし、Cで作ったobjファイルをリンクしてひとつのexe(ないしdll)にすることもできる。

注意すべき点はCのソースファイルをC++/CLIのプロジェクトに含める場合、ソースファイルのプロパティ画面で「共通言語ランタイム サポートを使用しない」「プリコンパイル済みヘッダーを使用しない」のふたつを設定しなければならないことである。
この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« THN1-2-04l | TOP | THN1-2-05a »
最新の画像もっと見る

Recent Entries | 不良プログラマの夕べに