
[英]MinGW on windows gcc compiler to create 64 Bit DLL for a nodejs (ffi-napi)
[英]Use ffi (-napi) in NodeJS on Windows
我正在尝试从 node 连接到一个 DLL,并且我已经了解了 ffi。 我更像是一个 GNU/Linux 人而不是 MS。 对我来说,常规的 ffi 包没有正确构建,但 ffi-napi 可以。 我尝试遵循npm 包站点上挂接到 ceil(double) 的简单测试例程。 那里的示例代码链接了我更熟悉的 libm 库,但这不是 Microsoft 做事的方式。 据我所知,这个函数在 msvcrt.dll 中。 我在节点应用程序外壳中执行了以下操作:
ffi = require('ffi-napi')
msvcrt = ffi.Library('C:\\Windows\\System32\\msvcrt', {'ceil': [ 'double', [ 'double' ] ]})
在第二行按回车后,有很多文本转储到节点外壳,然后应用程序关闭。 有人在 Windows 上使用过 ffi 吗? 有什么明显的我遗漏了吗?
我觉得有点傻,但我只是太精确了。 它与:
ffi = require('ffi-napi')
msvcrt = ffi.Library('msvcrt', {'ceil': [ 'double', [ 'double' ] ]})
msvcrt.ceil(1.5)
向控制台写入“2”。 我想我有点偏执,因为在 Linux 上搜索 /lib 和 /usr/lib 将是自动的,但 Windows 很奇怪,并且为每个程序提供了自己的目录。 我猜 Windows 上的 ffi 确实默认搜索 Windows\\System32 目录。
这也让我担心,因为我不知道为什么完全合格的路径会导致它崩溃。 如果有人对此有任何意见,我很乐意听到。
更新:我通过使用以下方法使其与完全限定的路径一起使用:
msvcrt = ffi.Library('\\Windows\\System32\\msvcrt', {'ceil': [ 'double', [ 'double' ] ]})
所以这允许在同一个“驱动器号”上的任何地方访问 DLL(这对于我现在使用就足够了)。 如果我找到穿越到不同驱动器的答案,我会再次更新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.