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

问题描述 投票:0回答:1

我目前正在尝试使用node-gyp将C++与nodejs项目连接起来。我当前的问题是我有一个32位库文件和一个64位库文件。我的电脑使用的是 64 位。如果我使用32位库文件,并使用

node-gyp
重建构建它,当我使用该库的函数时,它会出现无法解析的外部符号的错误,但如果我使用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"
]

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

c++ node.js node-gyp lib
1个回答
0
投票

(对于这个老问题)一个可能的解决方案是根据构建库文件的体系结构来命名库文件,然后在 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-and-Conditionals

© www.soinside.com 2019 - 2024. All rights reserved.