https://github.com/node-ffi/node-ffi 已经 3 年没有更新了,看来这种方案并不是那么完美,有现在正在使用的吗. 尝试了多次,报错问题频繁,有没有别的方式去调用 dll?
1
Mikewu 2021-10-19 11:19:08 +08:00
|
2
AoEiuV020 2021-10-19 11:19:31 +08:00
node-gyp
|
3
wszgrcy 2021-10-19 11:41:31 +08:00
我记得有个人 fork 了一份,然后继续维护了.
|
4
g00001 2021-10-19 12:19:16 +08:00
aardio 里网页调用原生 DLL 相对简单一些。
嵌入 Electron 组件调用 DLL : --------------------------- import electron.app; var theApp = electron.app(); theApp.html = /** <script> aardio = require("aardio"); aardio.msgBox("内容","标题"); </script> **/ theApp.external = { msgBox = function(text,caption){ ::User32.MessageBox(theApp.hwndChrome,text,caption,0) } } theApp.start("/res/index.html"); win.loopMessage(); WebView2 调用 DLL : --------------------------- import win.ui; var winform = win.form(text="WebView2") import web.view; var wb = web.view(winform); wb.external = { msgBox = function(text,caption){ ::User32.MessageBox(winform.hwnd,text,caption,0) } } wb.html = /** <script> aardio.msgBox("内容","标题");</script> **/ winform.show(); win.loopMessage(); JavaScript 直接调用 DLL : --------------------------- import win.ui; var winform = win.form(text="JS 直接调用 WinAPI") import web.blink.form; var mb = web.blink.form(winform); web.blink.export( user32 = ::User32;//导出 DLL 对象为 JS 全局变量 form = winform; //窗口对象也可以导出为 JS 变量 blink = mb; //mb 自己也可以导出为 JS 变量 ); mb.html = /** <a href='javascript: user32.MessageBox(0,"JS 直接调用 WinAPI","user32.MessageBox",0) '>JS 直接调用 WinAPI 函数试一下</a> **/ winform.show() win.loopMessage(); |
5
ysc3839 2021-10-19 13:02:32 +08:00 via Android
建议把错误信息说清楚。
不用 ffi 的话基本上要自己写模块封装了,可能会更麻烦。 |
6
dcsuibian 2021-10-19 13:20:55 +08:00
不清楚具体场景。有没有可能弄一个 C++进程,一个 js 进程,通过网络通讯呢?
参考微服务,感觉很麻烦,但是通用性很强。 |
8
Takashi123 2021-10-19 17:27:55 +08:00
node-gyp+1
|