diff --git a/electron/idcard-worker.js b/electron/idcard-worker.js index c7563a9..91040df 100644 --- a/electron/idcard-worker.js +++ b/electron/idcard-worker.js @@ -72,21 +72,22 @@ function loadDll() { lib = koffi.load(dllPath); // 尝试使用 stdcall 约定,这对于 Windows 32位 DLL 很常见 - // 如果函数名被修饰(如 _Syn_FindUSBReader@0),__stdcall 会自动处理 - const stdcall = "__stdcall"; + // koffi 中指定 stdcall 约定需要在函数名前加 __stdcall,但不能作为字符串拼接在类型里 + // 正确语法是 lib.stdcall('函数名', '返回类型', ['参数类型'...]) 或者在字符串定义中使用特定格式 + // 根据 koffi 文档,字符串定义格式为: "ReturnType __stdcall FunctionName(Args...)" return { - 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_FindUSBReader: lib.func("int __stdcall Syn_FindUSBReader()"), + Syn_USBOpenPort: lib.func("int __stdcall Syn_USBOpenPort(int)"), + Syn_USBClosePort: lib.func("int __stdcall Syn_USBClosePort(int)"), Syn_USBStartFindIDCard: lib.func( - `${stdcall} int Syn_USBStartFindIDCard(int, uint8*, int)` + "int __stdcall Syn_USBStartFindIDCard(int, uint8*, int)" ), Syn_USBSelectIDCard: lib.func( - `${stdcall} int Syn_USBSelectIDCard(int, uint8*, int)` + "int __stdcall Syn_USBSelectIDCard(int, uint8*, int)" ), Syn_ReadMsg: lib.func( - `${stdcall} int Syn_ReadMsg(int, int, _Out_ IDCardData*)` + "int __stdcall Syn_ReadMsg(int, int, _Out_ IDCardData*)" ), }; } catch (err) {