在node-gip binding.gyp文件中,如何根据系统结构(32位、64位)包含不同的库文件

In node-gyp binding.gyp file, how to include different library files based on the system arch (32 bit, 64bit))

本文关键字:文件 64位 32位 包含不 gyp binding node-gip 何根 系统结构      更新时间:2023-10-16

我目前正在尝试使用node-gyp将c++与nodejs项目连接起来。我目前的问题是我有一个32位库文件和一个64位库文件。我的电脑正在使用64位。如果我使用32位库文件,并使用node-gyp-rebuild构建它,当我使用该库的函数时,它将有未解析的外部符号的错误,但如果我使用64位库,它可以正常工作。我想知道如果计算机是32位的,是否有一种方法可以包括32位库,如果是64位,是否有方法可以包括64位库

我试着运行

node-gyp clean configure build --verbose --arch=ia32

但当我运行node index.js 时,它将返回以下错误

testaddon.node is not a valid Win32 application.

我的图书馆binding.gyp文件如下

"libraries": [
"../cppsrc/lib/some32.lib"
]

我检查了这个链接,但在的条件下,它似乎没有拱形的选项

谢谢。

(这个老问题的(一个可能的解决方案是根据库文件的构建架构命名库文件,然后在binding.gyp中使用变量,在macos和linux上可以这样做:

"libraries": [
"../cppsrc/lib/some.<!(uname -m | tr A-Z a-z).lib"
]

根据您使用的shell,Windows可能有类似的功能。

请参阅https://gyp.gsrc.io/docs/InputFormatReference.md#Variables-和条件以获取详细信息。