У меня есть следующий код JNI:
JNIEXPORT jint JNICALL Java_demo_Test_callCritical
(JNIEnv *env, jclass jobj_clazz)
{
printf("I'm not critical\n");
return 1;
}
JNIEXPORT jint JNICALL JavaCritical_demo_Test_callCritical ()
{
printf ("I'm critical\n");
return 1;
}
И Kotlin код:
package demo
class Test {
companion object {
@JvmStatic
external fun callCritical(): Int
}
}
Если я запускаю программу, она обрабатывает метод Java, а не JavaCritical , Я выполнил все условия для запуска JavaCritical.
Есть похожий вопрос: Как заставить JavaCritical действительно работать на JNI , но я собираю нативную часть и запускаю ее на MacOS.
UPD: я собрал под jvmTarget 1.8, версию kotlin 1.3.61, и работал на jvm 1.8.0_222 и 11.0.2