From 823a8f83b80687a2e31addf92ddbba2e5628fe9c Mon Sep 17 00:00:00 2001 From: yuchenglong Date: Thu, 20 Nov 2025 11:45:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20DLL=20=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=20stdcall=20=E7=BA=A6=E5=AE=9A?= =?UTF-8?q?=E4=BB=A5=E6=94=AF=E6=8C=81=20Windows=2032=E4=BD=8D=20DLL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/idcard-worker.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) 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({