DllImport, unsafe код, указатель на функцию - C#
Формулировка задачи:
Необходимо вызвать функцию из dll, у которой параметром является структура, в которой одно из полей - указатель на функцию. Я не знаю, как средствами C# определить указатель на функцию в unsafe коде. Помогите, пожалуйста, разобраться.
Вот код из заголовочного файла C++
И нужно ли в данном случае указывать параметр упаковки Pack = 1 или просто [StructLayout(LayoutKind.Sequential)]
Листинг программы
- typedef void (* pF)(void* object);
- typedef struct StrA_
- {
- void* data;
- pF f1;
- } StrA;
- extern "C" int Func(StrA* s);
Листинг программы
- [StructLayout(LayoutKind.Sequential, Pack = 1)]
- public unsafe struct StrA_
- {
- void* data;
- // pF f1; ????
- }
- [DllImport("aaa.dll", CallingConvention = CallingConvention.Cdecl)]
- public unsafe static extern int Func(StrA_* s);
Решение задачи: «DllImport, unsafe код, указатель на функцию»
textual
Листинг программы
- [DllImport("freetype6.dll", EntryPoint = "FT_Init_FreeType", CallingConvention = CallingConvention.Cdecl)]
- private unsafe static extern int Init_FreeType(out LibraryRec alibrary);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д