DllImport, unsafe код, указатель на функцию - C#

Узнай цену своей работы

Формулировка задачи:

Необходимо вызвать функцию из dll, у которой параметром является структура, в которой одно из полей - указатель на функцию. Я не знаю, как средствами C# определить указатель на функцию в unsafe коде. Помогите, пожалуйста, разобраться. Вот код из заголовочного файла C++
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);
И нужно ли в данном случае указывать параметр упаковки Pack = 1 или просто [StructLayout(LayoutKind.Sequential)]

Решение задачи: «DllImport, unsafe код, указатель на функцию»

textual
Листинг программы
[DllImport("freetype6.dll", EntryPoint = "FT_Init_FreeType", CallingConvention = CallingConvention.Cdecl)]
private unsafe static extern int Init_FreeType(out LibraryRec alibrary);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.3 из 5