Kotlin Имя собственной библиотеки Cinterops - PullRequest
1 голос
/ 28 мая 2020

Я использую cinterops для связывания библиотеки c Dynami в исполняемом двоичном файле 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, код заработает. (редактировать)

1 Ответ

1 голос
/ 28 мая 2020

Ну, похоже, что имя файла определено внутри dll. Я переименовал файл dll, но имя будет исходным. Я не знал, что эта информация хранилась внутри dll

...