• 締切済み

【C#C++】Win32API呼び出し

C#からWin32APIのようなアンマネージドDLLを呼び出す場合 引数や戻り値にはマーシャリングが必要になりますが C++ではアンマネージドDLLが理解できるような実装に従う限り マーシャリングを行わずに従来通りの方法でアンマネージドDLLを呼び出せると聞きました。 この場合、 1.C#→C++→アンマネージドDLL 2.C#→アンマネージドDLL (※マーシャリングを利用) 1と2ではどちらのほうがパフォーマンス的に有利といえるのでしょうか。 C#からアンマネージドDLLを呼び出すのにC++を間にかませるかどうか 判断に悩んでおります。 よろしくお願いいたします。

みんなの回答

回答No.2

×1.C#→C++→アンマネージドDLL ○1.C#->C++/CLI->アンマネージドDLL なのでは。 C++/CLIのクラスライブラリ内でWIN32APIを呼び出し、当該のクラスライブラリをC#から利用するということでしょう。 どちらにしろ、2.に軍配が上がるでしょう。 ただし、その速度差が体感できるものかどうかは不明です。

  • unacyo
  • ベストアンサー率51% (35/68)
回答No.1

パフォーマンス云々の前に、C#→C++の呼び出しの時点でマーシャリングが必要では? いずれにせよ、マネージからアンマネージはどこかでマーシャリングが必要になるかと。

関連するQ&A