2009-08-28 9 views

答えて

0

Cは非常に簡単ですが、C++はマングリングのために複雑です。このdescriptionを読んでください。

1

いわゆる「P/Invoke」呼び出し(「プラットフォーム呼び出し」)によって「通常の」C-APIを使用できます。これには、Windows APIと通常の関数呼び出しをエクスポートするその他のライブラリが含まれます。しかし、オブジェクトを返すC++ DLLについてはわかりません。これはもっと難しいかもしれない...?

Windowsでは、いつでもCOMライブラリとして登録できる方法で.NET DLLを作成できます。次に、COMオブジェクト(VB6、Delphi、C++など)の使用をサポートする任意の言語の他のCOMオブジェクトと同様に、公開された.NETクラスを使用できます。

しかし、Windows Mobileでは動作しないようです。

ので:任意のプラットフォーム上のC#から 使用C-APIを - はい、何の問題は、P /起動する方法Windows上でC++から 使用C#のDLLを学ぶ - はい、COMはCから 使用C#のDLLをオブジェクトを作成する必要はありません++ Windows Mobile上で動作しないAFAIK

1

エクスポートされたC関数を持つネイティブDLLがある場合は、P/Invokeメカニズムを使用して簡単に使用できます。

しかしC++クラスは難しく、C++からエラーが発生しやすくなります。このためには、C++/CLIで管理されたアセンブリラッパーを作成するほうがずっと良いでしょう。これにより、C#から使用できる.NETアセンブリが作成され、通常のC++プロジェクトと同様にC++ライブラリを使用することができます。

2

初めてP/Invokeメカニズムを使い始めたとき、私は本当に有益な例を見ていました。多くのWin32 C-API関数 "P/Invoking"はpinvoke.net

に記載されています
関連する問題