Я использую 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, код заработает. (редактировать)