【发布时间】: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