Вызов Win32 функции по её адресу
От: Valkov  
Дата: 24.08.06 07:02
Оценка:
Подскажите пожалуйста как из C# вызвать Win32 функцию по её адресу
Например есть функция wglChoosePixelFormatARB библиотеки opengl32.dll
для её использования в текущем контексте для С++ код выглядит так,
и что самое интересное, работает замечательно:

// Определение
extern BOOL WINAPI wglChoosePixelFormatARB (HDC, const int *, const FLOAT *, UINT, int *, UINT *);
typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
...
// Использование
wglChoosePixelFormatARB = (PFNWGLCHOOSEPIXELFORMATARBPROC) wglGetProcAddress("wglChoosePixelFormatARB");
...
wglChoosePixelFormatARB(hDC,attr,NULL,1,&format,&count);

Но требуется реализация функции wglChoosePixelFormatARB именно на C#
Для получения адреса:

[DllImport(WGL_NATIVE_LIBRARY, SetLastError = true), SuppressUnmanagedCodeSecurity]
public static extern IntPtr wglGetProcAddress(string extension);

// Получаю адрес функции
IntPtr wgl = wglGetProcAddress("wglChoosePixelFormatARB");

А вот как определить и вызвать функцию wglChoosePixelFormatARB ?
т.к. простой DllImport естественно не работает пишет что, функция в библиотеке не найдена
Через Marshal что то тоже пока не получается
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.