Intereting Posts

Как правильно перенести собственную библиотеку c в Xamarin.iOS

Я пытаюсь связать родную библиотеку c (не объектной c) с Xamarin.iOS.

Мой проект, который состоит из файлов .c и .h, строит отлично в XCode. Фактические .h и .m проекта не содержат никаких функций, мне нужно использовать только c-определенные подпрограммы.

Файл h, содержащий определение необходимого метода, выглядит следующим образом:

#ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #include  #include  #include  #include  int sprec_flac_encode(const char *wavfile, const char *flacfile); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* !__SPREC_FLAC_ENCODER_H__ */ 

Я построил его в жирную двоичную систему, но спецификация в Xamarin Documentation не ясна. Учитывая, что я привязываю родную библиотеку, мне нужен проект Binding в моем решении. В любом случае мне нужен вызов оболочки для определения моих определений DLLImport? Где этот процесс документирован? Мне нужна учебная программа для моей конкретной ситуации.

PS Objective Sharpie генерирует пустой class привязки, если я «корню» его своим .h-файлом, возможно, поскольку он не является объективным-c.

    Так как это код C, вы должны использовать что-то вроде PInvoke Interop Assistant для создания привязок C #.

     public partial class NativeMethods { [DllImport("", EntryPoint="sprec_flac_encode", CallingConvention = CallingConvention.Cdecl)] public static extern int FlacEncode( [MarshalAs(UnmanagedType.LPStr)] string wavfile, [MarshalAs(UnmanagedType.LPStr)] string flacfile) ; } 

    Для библиотек C не требуется проект привязки ObjectiveC. Просто создайте собственный lib и добавьте его в свой проект с импортом Dll.