2009-12-29 2 views
3

У меня есть собственная библиотека C++, которая использует большой статический буфер (он получает данные с устройства).Доступ к собственным данным C++ из управляемого C++

Допустим, этот буфер определяется следующим образом:

unsigned char LargeBuffer[1000000]; 

Теперь я хотел бы выставить части этого буфера в управляемый C++, например, когда 1000 байтов новых данных хранятся в библиотеке по адресу LargeBuffer[5000] Я хотел бы выполнить обратный вызов в управляемый код C++, передав указатель на LargeBuffer[5000], чтобы управляемый C++ мог получить доступ к 1000 байтам данных (прямо, если это возможно, т.е. без копирования данных, чтобы достичь максимальной производительности).

Каков наилучший способ позволить управляемым данным доступа к коду C++ в этом родном массиве?

+0

Это написано «родной» не «неуправляемый» –

+0

Разве они не являются синонимами в этом контексте? –

+0

«неуправляемый» отрывается как немного помпезно для местных программистов –

ответ

4

Управляемый C++ может получить доступ к неуправляемой памяти просто отлично. Вы можете просто передать указатель и использовать его в управляемом C++.

Теперь, если вы хотите, чтобы затем передать эти данные в другие языках .NET, вам необходимо скопировать эти данные к управляемым структурам памяти или использовать небезопасный код в C#

+0

На самом деле мне придется передать данные из управляемого C++ на C#, поэтому я предполагаю, что мне придется использовать небезопасный код. –

+0

CLI C++ и C# прекрасно сочетаются, нет необходимости в ключевом слове unsafe. – user230821

+0

@ high6: Есть ли доступ к необработанному указателю с C#. –

1

С .net 2.0 и новый IJW, вы должны иметь доступ к буферу непосредственно из CLI C++.

Пока вы не укажете «# прагма неуправляемая», тогда код будет скомпилирован как форма управления, что позволяет прямой доступ.

+0

Ок из C++, но если я хочу получить доступ к необработанному указателю с C#, мне придется использовать небезопасное ключевое слово. Спасибо, что указал мне на IJW: я очень мало знаю об управляемых неуправляемых механизмах, теперь я понимаю немного больше. –

Смежные вопросы