#c #kotlin #kotlin-multiplatform #kotlin-native #cinterop
#c #kotlin #kotlin-мультиплатформенный #kotlin-native #cinterop
Вопрос:
Я добавил заголовки таким образом в build.gradle.kts
файл:
linuxX64 {
val main by compilations.getting
main.cinterops.create("x11") {
defFile("src/linuxX64Main/cinterop/x11.def")
compilerOpts.add("-I" rootDir.resolve("include"))
}
}
Библиотека отлично компилируется и публикуется в mavenLocal, но когда какой-либо другой проект добавляет ее в качестве зависимости и запускает компоновщик, он выдает следующие ошибки:
> Task :linkReleaseExecutableLinuxX64
e: C:UsersAnimesh.konandependenciesmsys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1/bin/ld.lld invocation reported errors
The C:UsersAnimesh.konandependenciesmsys2-mingw-w64-x86_64-clang-llvm-lld-compiler_rt-8.0.1/bin/ld.lld command returned non-zero exit code: 1.
output:
ld.lld: error: undefined symbol: XOpenDisplay
>>> referenced by out
>>> C:UsersAnimeshAppDataLocalTempkonan_temp3813013133705122841result.o:(kfun:com.github.animeshz.keyboard.X11KeyboardHandler#prepare(){})
ld.lld: error: undefined symbol: XPeekEvent
>>> referenced by out
>>> C:UsersAnimeshAppDataLocalTempkonan_temp3813013133705122841result.o:(kfun:com.github.animeshz.keyboard.X11KeyboardHandler#readEvents(){})
ld.lld: error: undefined symbol: XCloseDisplay
>>> referenced by out
>>> C:UsersAnimeshAppDataLocalTempkonan_temp3813013133705122841result.o:(kfun:com.github.animeshz.keyboard.X11KeyboardHandler#cleanup(){})
> Task :linkReleaseExecutableLinuxX64 FAILED
Как нам включить некоторые заголовки / символы C-interop в артефакт библиотеки, который должен быть создан и опубликован в maven (в настоящее время тестируется на mavenLocal)?
Комментарии:
1. Я правильно понимаю, что вы хотите упаковать общую библиотеку в результирующий артефакт? Почему бы вместо этого не попытаться сгенерировать привязки для библиотеки, установленной в целевой системе?