Собственное приложение 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. Так что я буду признателен за любую помощь с этим.

0 ответов

Другие вопросы по тегам