优化 DLL 加载,添加 stdcall 约定以支持 Windows 32位 DLL

This commit is contained in:
yuchenglong
2025-11-20 11:45:41 +08:00
parent d62e6af24b
commit 823a8f83b8

View File

@@ -71,17 +71,23 @@ function loadDll() {
});
lib = koffi.load(dllPath);
// 尝试使用 stdcall 约定,这对于 Windows 32位 DLL 很常见
// 如果函数名被修饰(如 _Syn_FindUSBReader@0__stdcall 会自动处理
const stdcall = "__stdcall";
return {
Syn_FindUSBReader: lib.func("int Syn_FindUSBReader()"),
Syn_USBOpenPort: lib.func("int Syn_USBOpenPort(int)"),
Syn_USBClosePort: lib.func("int Syn_USBClosePort(int)"),
Syn_FindUSBReader: lib.func(`${stdcall} int Syn_FindUSBReader()`),
Syn_USBOpenPort: lib.func(`${stdcall} int Syn_USBOpenPort(int)`),
Syn_USBClosePort: lib.func(`${stdcall} int Syn_USBClosePort(int)`),
Syn_USBStartFindIDCard: lib.func(
"int Syn_USBStartFindIDCard(int, uint8*, int)"
`${stdcall} int Syn_USBStartFindIDCard(int, uint8*, int)`
),
Syn_USBSelectIDCard: lib.func(
"int Syn_USBSelectIDCard(int, uint8*, int)"
`${stdcall} int Syn_USBSelectIDCard(int, uint8*, int)`
),
Syn_ReadMsg: lib.func(
`${stdcall} int Syn_ReadMsg(int, int, _Out_ IDCardData*)`
),
Syn_ReadMsg: lib.func("int Syn_ReadMsg(int, int, _Out_ IDCardData*)"),
};
} catch (err) {
parentPort.postMessage({