1
我有一個C#array<System::Byte>
,我希望將其轉換爲C++ byte*
。我怎樣才能做到這一點?我使用的是C++/CLR,因爲它允許我在同一個項目中使用託管/非託管代碼。我基本上是編寫一個DLL並製作一些可以通過C#調用的方法,但是它包含非託管的C++代碼。C#字節數組和C++字節數組之間的元帥
因此,基本上,我的C++/CLR方法頭是這樣的:
void testMethod(array<Byte>^ bytesFromCSharp);
和testMethod
我想的bytesFromCSharp
翻譯成可由其他非託管C++代碼中使用的byte*
的內部。我編寫了byte*
數組,並編寫了一個for循環來逐字節拷貝,但感覺應該有更好的解決方案。
編輯:實施例漢斯技術從下面他的回答:
//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);
...
}