- 締切済み
【C#C++】Win32API呼び出し
C#からWin32APIのようなアンマネージドDLLを呼び出す場合 引数や戻り値にはマーシャリングが必要になりますが C++ではアンマネージドDLLが理解できるような実装に従う限り マーシャリングを行わずに従来通りの方法でアンマネージドDLLを呼び出せると聞きました。 この場合、 1.C#→C++→アンマネージドDLL 2.C#→アンマネージドDLL (※マーシャリングを利用) 1と2ではどちらのほうがパフォーマンス的に有利といえるのでしょうか。 C#からアンマネージドDLLを呼び出すのにC++を間にかませるかどうか 判断に悩んでおります。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- FrazerDebuMan
- ベストアンサー率50% (1/2)
回答No.2
×1.C#→C++→アンマネージドDLL ○1.C#->C++/CLI->アンマネージドDLL なのでは。 C++/CLIのクラスライブラリ内でWIN32APIを呼び出し、当該のクラスライブラリをC#から利用するということでしょう。 どちらにしろ、2.に軍配が上がるでしょう。 ただし、その速度差が体感できるものかどうかは不明です。
- unacyo
- ベストアンサー率51% (35/68)
回答No.1
パフォーマンス云々の前に、C#→C++の呼び出しの時点でマーシャリングが必要では? いずれにせよ、マネージからアンマネージはどこかでマーシャリングが必要になるかと。