これは自作ライブラリについても同様のことが言えて、 他言語で自作したライブラリを容易に呼び出すことができる。従来 の.NET以前の言語でも、C++ のライブラリをVBで呼び出すことは可能であったが、 それとは全く次元の違う手軽さで、連携させることができる。 具体的にいえば、一つのソリューションの中に、 異なる言語のプロジェクトを混在させ、 特別なインタフェースを記述することなく、 他言語で呼び出すことができる。
以下、例として、C++のプロジェクトからC# のクラスライブラリを呼び出す方法を紹介する。
C#側
呼び出されるクラスライブラリを作成しておく。 特別なことは必要なく、. NETのコンポーネントクラスとして作成しておけばよい。
C++側
.NETのC++、つまりC++/CLIのプロジェクトを作成する。 MFCのプロジェクトからは呼び出すことはできないので注意。
以上、2つのプロジェクトを同一のソリューション内で開いておいてください(ソリューションを右クリックして既存のプロジェクトを追加しておく)。
呼び出すC#のプロジェクトを参照に追加する
C#側
呼び出されるクラスライブラリを作成しておく。
C++側
.NETのC++、つまりC++/CLIのプロジェクトを作成する。
以上、2つのプロジェクトを同一のソリューション内で開いておいてください(ソリューションを右クリックして既存のプロジェクトを追加しておく)。
呼び出すC#のプロジェクトを参照に追加する
ここが一番のポイント。C++のプロジェクトを右クリックし、 参照を選択する。
「新しい参照の追加」ボタンをクリック。
プロジェクトのタブを選択し、呼び出したいC#のプロジェクトを選択し追加。
以上の設定により、C#で作成したライブラリをC++ で呼び出すことができる。
今回、ツイッタークライアントのプログラムをC++/CLIで作成しようとしてサンプルがなく、C#で書かれているサンプルを元に書き直すしかないのか、、、と思っていて結論としてこの方法を採用することにしました。C++/CLI側から全く違和感なく利用できるというのは大変魅力です。本研究室では、MFCとの親和性からC++/CLIを中心言語としていますが、C#をもっとうまく取り入れれば開発効率が上がるかも、、、と感じました。
注意事項
原則として、どのようなクラス(型)でも気にすることなく、C+ +側で呼び出し可能です。ただし、C# 側でrefとかoutといった参照渡しをするようなメソッドがあ れば、その呼び出し方は注意が必要です。ここでは書きませんが、 C++側での記述にちょっと細工が必要なようです。
原則として、どのようなクラス(型)でも気にすることなく、C+
0 件のコメント:
コメントを投稿