首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在NodeJS中使用ffi (-napi)

在NodeJS中使用ffi (-napi)
EN

Stack Overflow用户
提问于 2021-10-14 05:23:25
回答 1查看 157关注 0票数 0

我正在尝试从node连接到一个DLL,并且我已经了解了ffi。我更喜欢GNU/Linux而不是me。对我来说,常规的ffi包没有正确构建,但是ffi-napi构建正确了。我尝试遵循the npm package site的简单测试例程,该例程挂钩到ceil(双精度)。这里的示例代码链接了libm库,这对我来说比较熟悉,但这不是Microsoft的做法。据我所知,这个函数是在msvcrt.dll中实现的。我在node app shell中执行了以下操作:

代码语言:javascript
复制
ffi = require('ffi-napi')
msvcrt = ffi.Library('C:\\Windows\\System32\\msvcrt', {'ceil': [ 'double', [ 'double' ] ]})

在第二行按enter后,有许多文本被转储到节点shell,然后应用程序关闭。有没有人在Windows上用过ffi?有什么明显的我遗漏了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2021-10-14 06:00:59

我觉得有点傻,但我只是说得太准确了。它在以下情况下工作:

代码语言:javascript
复制
ffi = require('ffi-napi')
msvcrt = ffi.Library('msvcrt', {'ceil': [ 'double', [ 'double' ] ]})
msvcrt.ceil(1.5)

并将“2”写入控制台。我想我有点偏执,因为在Linux上搜索/lib和/usr/lib是自动的,但是Windows很奇怪,每个程序都有自己的目录。我猜ffi在Windows上确实默认搜索Windows\System32目录。

这也让我担心,因为我不知道为什么一个完全限定的路径会导致它崩溃。如果任何人对此有任何意见,我很想听听。

更新:我通过使用以下命令让它与完全限定的路径一起工作:

代码语言:javascript
复制
msvcrt = ffi.Library('\\Windows\\System32\\msvcrt', {'ceil': [ 'double', [ 'double' ] ]})

因此,这允许在相同的“驱动器号”上访问任何地方的DLL(对于我现在的使用来说已经足够了)。如果我找到了穿越到另一个驱动器的答案,我会再次更新它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69565474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档