Как я могу импортировать код c в commonMain (Kotlin / мультиплатформенный проект)

#kotlin-multiplatform

#kotlin-мультиплатформенный

Вопрос:

Я хочу реализовать несколько вариантов использования, прежде чем переносить свой код бизнес-логики с JAVA на Kotlin / Multiplatform. Один из них использует код c . Есть ли возможность использовать код c в Kotlin / мультиплатформенном проекте на уровне commonMain? Или мне нужно написать слой-оболочку (например, JNI) для каждой платформы? Могу ли я получить какой-нибудь пример кода?

Большое спасибо!

Ответ №1:

Вызов C может быть сложным. Вам нужно будет иметь JNI в JVM, а в native вам нужно будет обернуть C с помощью C (или Objective-C), затем использовать cinterop, чтобы сделать это доступным для собственного компилятора Kotlin. Затем, в общем, вам нужно будет написать общую версию логики и реализовать ее на каждой платформе.

     Kotlin(common)
          |
         / 
        /   
    Kt(jvm) Kt(native)
      /       
    JNI       C/ObjC
    /           
  C             C  
  

В конечном итоге может быть прямое взаимодействие C с native, но не уверен, когда.