【问题标题】:Kotlin Cinterops native library nameKotlin Cinterops 原生库名称
【发布时间】:2020-05-28 13:22:44
【问题描述】:

我正在使用 cinterops 将动态库链接到 mingw 二进制可执行文件中。一切正常,除了可执行文件要求的 .dll 名称与 .def 文件中声明的名称不同。 我不知道这个不同的名字是从哪里来的! 这是来自我的 gradle.build.kts:

mingwX86("mingw"){
    compilations["main"].cinterops{
        val scape2 by creating {
            val cafmSrc = "C:/Software/SCAP E2/CAFM_src"
            val scapSrc = "C:/Software/SCAP E2/TO/ETME2"
            val modifiedSrc = "C:/Software/SCAP E2/Modified CAFM files"
            includeDirs.headerFilterOnly(cafmSrc, scapSrc, modifiedSrc)
            extraOpts.add("-verbose")
        }
    }
    binaries {
        executable()
    }
}

这是我的 scape2.def 文件:

headers = scape2.h
headerFilter = scape2.h \ GEO_API_SCAPTO.h
linkerOpts.mingw = -LC:/Users/lscarmin/git/calculation-module4 -lscape2

我原以为 dll 名称是 scape2.dll。 但是当我运行可执行文件时,它要求输入 ETME2.dll! 如果我将 scape2.dll 重命名为 ETME2.dll,则代码有效。 (编辑)

【问题讨论】:

    标签: kotlin multiplatform kotlin-multiplatform kotlin-native


    【解决方案1】:

    嗯,使用的文件名似乎是在 dll 中定义的文件名。我已重命名 dll 文件,但使用的名称将是原始名称。 我不知道这个信息保存在 dll 中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多