Как связаться с чистым C (.c файлы) SDK для IOS (obj-C, .m файлы) фреймворк?

Предисловие: у меня мало опыта в интеграции C в iOS, не стесняйтесь поправлять меня в любых неверных интерпретациях по этому поводу.

У меня есть проект, который имеет собственный двухуровневый «SDK», оба написаны на C.coreSDK делает вызовы метода кdeviceSDK который общается сIOS Framework выполнить аппаратные действия (т.е. включить камеру) или получить информацию об устройстве (например, путь к NSDocumentDirectory).

К сожалению, из-за инфраструктуры оба расширения файлов SDK используют (.h) и (.c) и не могут быть изменены на (.m), как рекомендовали некоторые источники. Согласно тому, что я прочитал, я могу создавать C-обратные вызовы для методов ObjC, но это действительно реально только для синглетонов, и C-обратный вызов должен быть в рамках файла (.m).

Я попытался создать класс-оболочку в ObjC так, чтобы он имел C-обратный вызов, из которогоdeviceSDK вызывает, но при включении заголовка (.h) для этого (.m) компилятор, похоже, падает. Если я правильно понимаю, это потому, что C-компилятор не может интерпретировать язык ObjC, содержащийся в (.m).

Я считаю, что теоретически возможно писать приложения для iOS на чистом C с использованием среды выполнения ObjC, но в идеале лучше не идти по этому пути, поскольку то, что я видел, абсурдно сложно.

Пример рабочего процесса

ViewController.m вызовы методовcoreSDK метод (.c)coreSDK вызовы методовdeviceSDK метод (.c)deviceSDK необходимо получить (например)NSDocumentDirectory (или включить камеру)

Как мне этого добиться?
Примеры кода были бы наиболее полными и оцененными.
Спасибо!

Вот некоторые (не все) ссылки, которые я уже изучил ...

Как написать приложение IOS чисто в CЧистая функция C, вызывающая метод Objective-CФункция C, вызывающая целевые функции CИспользование нативного метода target-c для обратных вызовов CМетоды обратного вызова из C в Objective-CСмешивание функций C в классе Objective-CКак вызвать метод Objective-C из метода CКак использовать чистые файлы C в проекте target-CИзменить: 2016-07-21

Чтобы прояснить проблему, у меня возникают проблемы с вызовами методов C в файлах (.c) к методам ObjC в файлах (.m) или поиском альтернативных способов получения информации, таких как (например) NSDocumentsDirectory в ObjC ( .m файлы) и возврат к C в (.c) файлах.

Пример кода: Конечно, это неправильно, но это соответствует моим ожиданиям или тому, чего я надеюсь достичь.

//GPS.h
#include "GPSWrapper.h"
STATUS_Code GPSInitialize(void);
//GPS.c
#include "GPS.h"
STATUS_Code GPSInitialize(void) {
  GPS_cCallback();
}
//GPSWrapper.h
#import <Foundation/Foundation.h>
@interface GPSWrapper: NSObject
- (void) testObjC;
@end
//GPSWrapper.m
#import "GPSWrapper.h"
static id refToSelf = nil;
@implementation GPSWrapper
  - (void) testObjC {
    // just an example of a ObjC method call
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSLog(documentsDirectory);
  }
@end

static void GPS_cCallback() {
  [refToSelf testObjC];
}

Ответы на вопрос(1)

Ваш ответ на вопрос