【发布时间】:2021-11-21 03:51:22
【问题描述】:
npm i ssh2 以:
MSVCRT.lib(chandler4gs.obj):错误 LNK2019:函数中引用了未解析的外部符号 __except_handler4_common __except_handler4 [c:\xxxxxxx\git\sdk\v2\master\node_modules\yyyy\node_modules\cpu-features\build\cpufeatures. vcxproj] c:\xxxxxxx\git\sdk\v2\master\node_modules\yyyy\node_modules\cpu-features\build\Release\cpufeatures.node :致命 错误 LNK1120:1 未解决的外部 [c:\SAPDevelop\git\sdk\v2\master\node_modules\irpa_core\node_modules\cpu-feature s\build\cpufeatures.vcxproj]
如您所见,问题出在cpu-features。我能够查看 MS Visual Studio 的 cpu-features 构建文件(通过运行 npm i cpu-features),我认为我找到了根本原因:
使用/MT 选项编译节点模块(cpufeatures.node)(C/C++ 运行时是静态链接的)
但是 DLL 链接到 cpu_features.lib,witch 本身是通过链接到 utils.lib 构建的...
cpu_features.lib 和 utils.lib 这两个库是使用 /MD 开关编译的(C/C++ 运行时是动态链接的)
这是不正确的。在带有 Visual Studio 的 Windows 上,所有链接到 DLL 的库必须使用相同的选项来链接到 C/C++ 运行时。在两个库的 Visual Studio 项目中手动将 /MD 更改为 /MT 后,DLL cpufeatures.node 构建良好。
我对@987654336@一无所知。
问题:如何在Windows上成功npm install ssh2?
(我在这里创建了一个问题:https://github.com/mscdex/cpu-features/issues/3 到目前为止无济于事。我知道 cpu-features 对于 ssh2 是 可选。替代问题:如何告诉 npm install ssh2 不要尝试构建 cpu 功能?)
Windows 10 Enterprise 64 bits 21H1 build 19043.1237
node v14.17.6
npm 6.14.15
node-gyp 8.2.0
cmake 3.21.3
Visual Studio Enterprise 2019 Version 16.11.3
【问题讨论】:
-
可选依赖项
cpu_feature中的错误已在 github (github.com/mscdex/cpu-features) 上修复,但目前未在 npmjs.com 上修复。
标签: c++ node.js visual-studio cmake ssh2