我是通过node-ffi-napi这个插件来调用dll函数的。
每当我运行electron程序后,只要触发了dll库里面的event事件,控制台就会输出'321',但是过几秒钟就报错栈溢出然后程序被杀掉。
类似于下面这样
PS F:\Project\myproject> npm run start
> my-project@1.0.0 start
> electron .
321
321
321
Process is terminated due to StackOverflowException.
PS F:\Project\myproject>
我尝试debug输出错误
输出结果显示这样
Error: command failed
at ChildProcess.<anonymous> (D:\env\nvm\v16.17.1\node_modules\npm\node_modules\@npmcli\promise-spawn\lib\index.js:63:27)
at ChildProcess.emit (node:events:513:28)
at maybeClose (node:internal/child_process:1093:16)
at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5) {
cmd: 'C:\\windows\\system32\\cmd.exe',
args: [
'/d',
'/s',
'/c',
'C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\start-11a285f4.cmd'
],
code: 2147943401,
signal: null,
stdout: null,
stderr: null,
event: 'start',
script: 'electron .',
pkgid: 'skin-hair@1.0.0',
path: 'F:\\Project\\Pacray\\skin\\front'
}
根据你的描述,您的Electron程序在调用DLL库的event事件后,会在控制台输出“321”,但随后几秒钟后就报StackOverflowException错误并被杀掉。这通常是由事件处理函数递归调用导致的栈溢出。
可能的原因有:
解决方法:
综上,栈溢出错误通常由递归调用导致,我的建议是: