C # P / Invoke: обратный вызов делегата Varargs

Я просто пытался выполнить управляемое / неуправляемое взаимодействие. Чтобы получить расширенную информацию об ошибках, я решил зарегистрировать обратный вызов журнала, предлагаемый dll:


[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public unsafe delegate void LogCallback(void* arg1,int level,byte* fmt);

Это определение работает, но я получаю такие строки, как «Формат% s проверяется с размером =% d и оценкой =% d». Я попытался добавить ключевое слово __arglist, но это не разрешено для делегатов.

Что ж, для меня это не так драматично, но мне просто любопытно, можно ли получить параметры varargs в C #. Я знаю, что могу использовать C ++ для взаимодействия. Итак: есть ли способ сделать это исключительно на C # с разумными усилиями?

РЕДАКТИРОВАТЬ : Для тех, кто все еще не понял: Я НЕ ИМПОРТИРУЮ функцию varargs НО ЭКСПОРТИРУЙТЕ его как обратный вызов , который затем называется моим собственным кодом. Я могу указать только одну перегрузку за раз -> возможна только одна перегрузка, и __arglist НЕ работает.

9
задан Zotta 14 July 2011 в 03:32
поделиться