Kotlin Cinterops本地库名

问题描述 投票:1回答:1

我正在使用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

但当我运行可执行文件时,它要求使用ETME2.dll!如果我把scape2.dll重命名为ETME2.dll,代码就会工作。(editado)

kotlin multiplatform kotlin-multiplatform kotlin-native
1个回答
1
投票

嗯,似乎使用的文件名是在dll里面定义的。我已经重新命名了dll文件,但使用的名称将是原来的名称,我不知道这些信息是保存在dll中的。

© www.soinside.com 2019 - 2024. All rights reserved.