3

大きな静的バッファを利用するネイティブC++ライブラリがあります(デバイスからデータを取得します)。

このバッファが次のように定義されているとしましょう。

unsigned char LargeBuffer[1000000];

ここで、このバッファーの一部をマネージC ++に公開したいと思います。たとえば、1000バイトの新しいデータがライブラリによって格納されている場合、マネージC ++コードへのコールバックを実行し、マネージC++がにアクセスできるようにLargeBuffer[5000]ポインターを渡します。LargeBuffer[5000]そこに1000バイトのデータがあります(可能な場合は直接、つまりデータをコピーせずに、最大のパフォーマンスを実現します)。

マネージC++コードがこのネイティブ配列のデータにアクセスできるようにするための最良の方法は何ですか?

4

2 に答える 2

4

マネージC++は、アンマネージメモリに問題なくアクセスできます。ポインタを渡すだけで、マネージC++で使用できます。

次に、そのデータを他の.NET言語に渡したい場合は、そのデータをマネージメモリ構造にコピーするか、C#で安全でないコードを使用する必要があります。

于 2009-12-29T18:15:37.747 に答える
1

.net 2.0および新しいIJW以降、CLIC++から直接バッファーにアクセスできるようになります。

「#pragmaunmanaged」を指定しない限り、コードは管理された形式としてコンパイルされます。これにより、直接アクセスが可能になります。

于 2009-12-29T18:52:53.053 に答える