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

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

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

Необходимо вызвать функцию из dll, у которой параметром является структура, в которой одно из полей - указатель на функцию. Я не знаю, как средствами C# определить указатель на функцию в unsafe коде. Помогите, пожалуйста, разобраться. Вот код из заголовочного файла C++
Листинг программы
  1. typedef void (* pF)(void* object);
  2. typedef struct StrA_
  3. {
  4. void* data;
  5. pF f1;
  6. } StrA;
  7. extern "C" int Func(StrA* s);
Листинг программы
  1. [StructLayout(LayoutKind.Sequential, Pack = 1)]
  2. public unsafe struct StrA_
  3. {
  4. void* data;
  5. // pF f1; ????
  6. }
  7. [DllImport("aaa.dll", CallingConvention = CallingConvention.Cdecl)]
  8. public unsafe static extern int Func(StrA_* s);
И нужно ли в данном случае указывать параметр упаковки Pack = 1 или просто [StructLayout(LayoutKind.Sequential)]

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут