diff --git a/electron/idcard-worker.js b/electron/idcard-worker.js index 3b6efc9..c7563a9 100644 --- a/electron/idcard-worker.js +++ b/electron/idcard-worker.js @@ -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({