Как сделать маркер void * с вызовом платформы

Мне нужно вызвать функцию из C API, содержащегося в DLL. Функция-прототип выглядит следующим образом ....

int func( char* name, void* value );

где содержимое значения указателя может ссылаться на любой тип, зависящий от переданного имени. Я не уверен, как настроить вход в Dll, чтобы правильно упорядочить эту пустоту *. Я экспериментировал с IntPtr, который, кажется, работает, когда значение является целым, но я не могу получить значения правильно для чисел с плавающей запятой и т. Д.

Я пытаюсь импортировать функцию, как это ...

[DllImport("dllname.dll", CharSet = CharSet.Ansi)]
public static extern int func( string name, ref IntPtr value );

Пожалуйста, обратите внимание, что значение является выходным. Указатель на значение любого типа, то есть адрес в глобальной области памяти значения известного типа (известного вызывающей стороне). В проге c ожидается, что вызывающая сторона применит этот void * к желаемому типу и разыменованию, чтобы получить фактическое значение, хранящееся там. Ответы, представленные до сих пор, основаны на предположении, что функция запишет результат в переданное местоположение указателя. Моя ошибка, поскольку я не был слишком конкретным. Сожалею. C # не моя сумка, и я даже не знаю, является ли IntPtr подходом ...

Ответы на вопрос(4)

Ваш ответ на вопрос