fix(Windows): Fix Native desktop library failing to load on Windows #815

This commit is contained in:
Artem Chepurnyi 2025-02-05 22:48:24 +02:00
parent b6948151a9
commit 1b37e45a31

View File

@ -3,6 +3,7 @@ package com.artemchep.jna
import com.sun.jna.Callback import com.sun.jna.Callback
import com.sun.jna.Library import com.sun.jna.Library
import com.sun.jna.Native import com.sun.jna.Native
import com.sun.jna.Platform
import com.sun.jna.Pointer import com.sun.jna.Pointer
import java.io.File import java.io.File
import java.nio.file.Files import java.nio.file.Files
@ -10,7 +11,9 @@ import java.nio.file.Files
private const val RES_FILENAME = "libkeyguard" private const val RES_FILENAME = "libkeyguard"
private const val OS_DIR_PREFIX = "libkeyguard" private const val OS_DIR_PREFIX = "libkeyguard"
private const val OS_FILE_FILENAME = "libkeyguard" private const val OS_FILE_FILENAME = "libkeyguard"
private const val OS_FILE_FILENAME_WINDOWS = "libkeyguard.dll"
private val libraryFile by lazy { private val libraryFile by lazy {
val filename = RES_FILENAME val filename = RES_FILENAME
@ -23,8 +26,15 @@ private fun extractLibrary(filename: String): File {
val outDir = Files val outDir = Files
.createTempDirectory(OS_DIR_PREFIX) .createTempDirectory(OS_DIR_PREFIX)
.toFile() .toFile()
val outFile = outDir val outFile = run {
.resolve(OS_FILE_FILENAME) val suffix = if (Platform.isWindows() || Platform.isWindowsCE()) {
OS_FILE_FILENAME_WINDOWS
} else {
OS_FILE_FILENAME
}
outDir
.resolve(suffix)
}
outFile.deleteOnExit() outFile.deleteOnExit()
// Copy the binary into the // Copy the binary into the
// output file. // output file.