Я пытаюсь прочитать массив, созданный путем выведения функции dll из C#. Когда я распечатываю содержимое массива, на самом деле он заполнен барахлом.Каков правильный способ маршалирования const float **?
Я подозреваю, что это происходит из-за неправильной сортировки const float**
до out IntPtr
. Как вы должным образом маршалируете const float**
?
DLL C++ интерфейс
int Foo(void *objPtr, uint64_t *resultLen, const float **result);
DLL Импорт Заявление
[DllImport("foo.dll", CharSet = CharSet.Auto)]
public static extern int Foo(IntPtr objPtr, out ulong resultLen, out IntPtr result);
телефонный код
IntPtr objPtr = getObj();
IntPtr result;
ulong resultLen;
int output = Foo(objPtr, out resultLen, out result);
показан пример с ++ код, который вызывает функцию –
вы можете рассмотреть возможность использования C++/CLI вместо P/Invoke –