Собственное приложение Kotlin с клиентом Ktor curl не запускается
У меня проблема с клиентом curl Kotlin Native + Ktor. Вот что я получаю при попытке запустить исполняемый файл:
Process 'command 'C:\...\build\bin\native\releaseExecutable\app.exe'' finished with exit value -1073741515 (state: FAILED)
Раньше мне вообще не удавалось получить исполняемый файл. Итак, я пошел в репо ktor-client-curl и заглянул в их build.gradle.kts. Я видел там жестко запрограммированные пути, на которые рассчитывает сборка (например,
C:/msys64/mingw64/include/curl
) и попытался установить msys2 на свой компьютер (под управлением Win 10). Как только я это сделал, я смог успешно создать исполняемый файл без предупреждений / ошибок. Но, когда пытаюсь запустить - появляется другая ошибка. Я погуглил этот код ошибки и нашел следующее:
# {Unable To Locate Component}
# This application has failed to start because %hs was not
# found. Re-installing the application may fix this problem.
Итак, я полагаю, что есть что-то, что не было включено в исполняемый файл. К сожалению, я не знаю, что именно. Вот мой build.gradle.kts:
plugins {
kotlin("multiplatform") version "1.4.20"
}
group = "com.test"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
}
kotlin {
val hostOs = System.getProperty("os.name")
val isMingwX64 = hostOs.startsWith("Windows")
val nativeTarget = when {
hostOs == "Mac OS X" -> macosX64("native")
hostOs == "Linux" -> linuxX64("native")
isMingwX64 -> mingwX64("native")
else -> throw GradleException("Host OS is not supported in Kotlin/Native.")
}
nativeTarget.apply {
binaries {
executable {
entryPoint = "main"
}
}
}
sourceSets {
val nativeMain by getting {
dependencies {
implementation("io.ktor:ktor-client-curl:1.4.2")
}
}
}
}
а вот и мой main.kt:
import io.ktor.client.*
import io.ktor.client.engine.curl.*
import io.ktor.client.request.*
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
fun test(args: Array<String>) {
val client = HttpClient(Curl)
print(client.attributes)
GlobalScope.launch(Dispatchers.Unconfined) {
val data = client.get<String>("https://httpbin.org/uuid")
print(data)
}
}
fun main(args: Array<String>) = test(args)
Мне не удалось найти пошаговое руководство или руководство о том, как правильно интегрировать этот ktor-client-curl в проект Native. Так что я буду признателен за любую помощь с этим.