私は C# を持っており、array<System::Byte>
それを C++ に変換したいと考えていますbyte*
。どうやってやるの?同じプロジェクトでマネージ コードとアンマネージ コードを使用できるため、C++/CLR を使用しています。私は基本的に DLL を作成し、C# 経由で呼び出すことができるいくつかのメソッドを作成していますが、それらにはアンマネージ C++ コードが含まれています。
基本的に、私の C++/CLR メソッド ヘッダーは次のとおりです。
void testMethod(array<Byte>^ bytesFromCSharp);
その中で、を他のアンマネージ C++ コードで使用できるに変換しtestMethod
たいと思います。私は配列をmallocし、forループを書いてバイトごとにコピーしましたが、もっと良い解決策があるはずです。bytesFromCSharp
byte*
byte*
編集:以下の彼の答えからのハンスのテクニックの例:
//C#
byte[] myBytes = {1,2,3,4};
//C++/CLI
void testMethod(array<byte>^ myBytes) {
pin_ptr<byte> thePtr = &myBytes[0];
byte* bPtr = thePtr;
nativeCode(bPtr);
...
}