Как сложить IntPtr + int?

237
18 ноября 2018, 15:40

Подскажите как прибавить int к IntPtr в Cи языке?

extern "C" __declspec(dllexport) const char* Plus(IntPtr intptr, int ints)
{
   Что тут нужно прописать, чтобы добавить int?
   return итоговый IntPrt;
}
Answer 1

Вы делаете что-то не понятное.

  1. Вы не можете экспортировать тип IntPtr т.к. это инкапсуляция голого указателя типа void * для .NET платформы.
  2. Если вы используете c++-cli, то вам нет необходимости делать

Ваша проблема решается примерно так:

extern "C" __declspec(dllexport) void* Plus(void* input_data, int offset)
{
   return (void*)input_data+offset;
}

Далее при использовании в .NET, вы смело можете оперировать с вашим переданным IntPtr в такую функцию.

[DllImport("MySuperIntarface.dll")]
static extern IntPtr Plus(IntPtr inputData, int offset);
void someMethod()
{
    IntPtr myData = IntPtr.Zero;
    IntPtr newData = Plus(myData, 4);
    Console.WriteLine("Old pointer is: {0}, new pointer is: {1}", myData, newData);
}
READ ALSO
C/C++, не найден <gtk/gtk.h>

C/C++, не найден <gtk/gtk.h>

Меня замучила следующая проблема

182
Как достать мета данные у видео файлов?

Как достать мета данные у видео файлов?

Не получается таким образом вывести когда был создан файл:

185
Serialization в java

Serialization в java

Создал 2 метода:

285