Я пытаюсь сделать милитаристский пример чтения и выполнения C-кода в Kotlin-Native. Я следую за этой статьей здесь . Однако на последнем этапе я получаю сообщение об ошибке «Неразрешенная ссылка». Вот все файлы / команды, которые я использую. Моя операционная система Windows.
testlib.h
#ifndef MY_TEST_LIB
#define MY_TEST_LIB
int getRandomNumber();
#endif
testlib.c
#include "testlib.h"
#include <stdio.h>
#include <stdlib.h>
int getRandomNumber() {
return rand();
}
Я скомпилировал эти файлы в статическую библиотеку с именем libtestlib.lib
. Моя цель - позвонить getRandomNumber
изнутри родного Котлина.
Далее у меня есть файлы, связанные с kotlin:
testlib.def
headers = testlib.h
headerFilter = ./*
compilerOpts = -L. -ltestlib -I.
CLibTest.kt
import testlib.*
fun main(args: Array<String>) {
println(getRandomNumber())
}
Наконец, я запускаю эти две команды.
Первый, кто сделал klib
:
cinterop -def testlib.def -o testlib
И затем этот последний для создания исполняемого файла:
konanc CLibTest.kt -library testlib
Все отлично работает до этой последней команды, где я получаю следующую ошибку:
CLibTest.kt:4:10: error: unresolved reference: getRandomNumber
println(getRandomNumber())
Может ли кто-нибудь указать, где я ошибся?