c++ - 尝试在 Windows 10 上安装 node-ffi 时出现错误:错误 C2660: 'v8::FunctionTemplate::GetFunction': function does not take 0 arguments
问题描述
我正在尝试将 node-ffi 作为一个包安装在我的一个电子应用程序中。直接“npm install node-ffi”失败了......所以我最终尝试了这里的“源安装”部分:
https://github.com/node-ffi/node-ffi
到目前为止我做了什么:
npm install --global windows-build-tools
这创建了以下文件夹:
PS C:\Users\jmk\.windows-build-tools> dir
Directory: C:\Users\jmk\.windows-build-tools
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2020-09-23 10:15 AM python27
-a---- 2020-09-23 10:15 AM 20246528 python-2.7.15.amd64.msi
-a---- 2020-09-23 11:06 AM 51992 python-log.txt
-a---- 2020-09-23 10:15 AM 1119848 vs_BuildTools.exe
正如你所看到的,它安装了 python2,但我更改了 node-gyp 使用的默认 python,如下所示:
PS C:\Users\jmk\source\github\node-ffi> npm config set python C:\Python38\python.exe
然后像这样确认:
nPS C:\Users\jmk\source\github\node-ffi> node-gyp configure
gyp info it worked if it ends with ok
gyp info using node-gyp@7.1.0
gyp info using node@12.18.4 | win32 | x64
gyp info find Python using Python version 3.8.5 found at "C:\Python38\python.exe"
gyp info find VS using VS2019 (16.7.30503.244) found at:
gyp info find VS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional"
gyp info find VS run with --verbose for detailed information
gyp info spawn C:\Python38\python.exe
gyp info spawn args [
gyp info spawn args 'C:\\Users\\jmk\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\gyp\\gyp_main.py',
gyp info spawn args 'binding.gyp',
gyp info spawn args '-f',
gyp info spawn args 'msvs',
gyp info spawn args '-I',
gyp info spawn args 'C:\\Users\\jmk\\source\\github\\node-ffi\\build\\config.gypi',
gyp info spawn args '-I',
gyp info spawn args 'C:\\Users\\jmk\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\addon.gypi',
gyp info spawn args '-I',
gyp info spawn args 'C:\\Users\\jmk\\AppData\\Local\\node-gyp\\Cache\\12.18.4\\include\\node\\common.gypi',
gyp info spawn args '-Dlibrary=shared_library',
gyp info spawn args '-Dvisibility=default',
gyp info spawn args '-Dnode_root_dir=C:\\Users\\jmk\\AppData\\Local\\node-gyp\\Cache\\12.18.4',
gyp info spawn args '-Dnode_gyp_dir=C:\\Users\\jmk\\AppData\\Roaming\\npm\\node_modules\\node-gyp',
gyp info spawn args '-Dnode_lib_file=C:\\\\Users\\\\jmk\\\\AppData\\\\Local\\\\node-gyp\\\\Cache\\\\12.18.4\\\\<(target_arch)\\\\node.lib',
gyp info spawn args '-Dmodule_root_dir=C:\\Users\\jmk\\source\\github\\node-ffi',
gyp info spawn args '-Dnode_engine=v8',
gyp info spawn args '--depth=.',
gyp info spawn args '--no-parallel',
gyp info spawn args '--generator-output',
gyp info spawn args 'C:\\Users\\jmk\\source\\github\\node-ffi\\build',
gyp info spawn args '-Goutput_dir=.'
gyp info spawn args ]
gyp info ok
PS C:\Users\jmk\source\github\node-ffi>
现在,当我执行“node-gyp build”或重建时,我看到如下错误:
C:\Users\jmk\source\github\node-ffi\src\ffi.cc(49,57): error C2660: 'v8::FunctionTemplate::GetFunction': function does not take 0 arguments [C:\Users\jmk\source\github\node-ffi\build\ffi_bindings.vcxproj]
C:\Users\jmk\AppData\Local\node-gyp\Cache\12.18.4\include\node\v8.h(6126,46): message : see declaration of 'v8::FunctionTemplate::GetFunction' (compiling source file ..\src\ffi.cc) [C:\Users\jmk\source\github\node-ffi\build\ffi_bin
dings.vcxproj]
C:\Users\jmk\source\github\node-ffi\src\ffi.cc(48,8): error C2661: 'Nan::Set': no overloaded function takes 2 arguments [C:\Users\jmk\source\github\node-ffi\build\ffi_bindings.vcxproj]
C:\Users\jmk\source\github\node-ffi\src\ffi.cc(51,60): error C2660: 'v8::FunctionTemplate::GetFunction': function does not take 0 arguments [C:\Users\jmk\source\github\node-ffi\build\ffi_bindings.vcxproj]
C:\Users\jmk\AppData\Local\node-gyp\Cache\12.18.4\include\node\v8.h(6126,46): message : see declaration of 'v8::FunctionTemplate::GetFunction' (compiling source file ..\src\ffi.cc) [C:\Users\jmk\source\github\node-ffi\build\ffi_bin
dings.vcxproj]
C:\Users\jmk\source\github\node-ffi\src\ffi.cc(50,8): error C2661: 'Nan::Set': no overloaded function takes 2 arguments [C:\Users\jmk\source\github\node-ffi\build\ffi_bindings.vcxproj]
C:\Users\jmk\source\github\node-ffi\src\ffi.cc(53,54): error C2660: 'v8::FunctionTemplate::GetFunction': function does not take 0 arguments [C:\Users\jmk\source\github\node-ffi\build\ffi_bindings.vcxproj]
C:\Users\jmk\AppData\Local\node-gyp\Cache\12.18.4\include\node\v8.h(6126,46): message : see declaration of 'v8::FunctionTemplate::GetFunction' (compiling source file ..\src\ffi.cc) [C:\Users\jmk\source\github\node-ffi\build\ffi_bin
dings.vcxproj]
C:\Users\jmk\source\github\node-ffi\src\ffi.cc(52,8): error C2661: 'Nan::Set': no overloaded function takes 2 arguments [C:\Users\jmk\source\github\node-ffi\build\ffi_bindings.vcxproj]
C:\Users\jmk\source\github\node-ffi\src\ffi.cc(55,59): error C2660: 'v8::FunctionTemplate::GetFunction': function does not take 0 arguments [C:\Users\jmk\source\github\node-ffi\build\ffi_bindings.vcxproj]
C:\Users\jmk\AppData\Local\node-gyp\Cache\12.18.4\include\node\v8.h(6126,46): message : see declaration of 'v8::FunctionTemplate::GetFunction' (compiling source file ..\src\ffi.cc) [C:\Users\jmk\source\github\node-ffi\build\ffi_bin
dings.vcxproj]
C:\Users\jmk\source\github\node-ffi\src\ffi.cc(54,8): error C2661: 'Nan::Set': no overloaded function takes 2 arguments [C:\Users\jmk\source\github\node-ffi\build\ffi_bindings.vcxproj]
我试图找出第一个错误。这就是 ffi.cc(49,57) 的样子:
Nan::New<FunctionTemplate>(FFIPrepCif)->GetFunction());
这就是 C:\Users\jmk\AppData\Local\node-gyp\Cache\12.18.4\include\node\v8.h(6126,46) 的样子
/** Returns the unique function instance in the current execution context.*/
V8_WARN_UNUSED_RESULT MaybeLocal<Function> GetFunction(
Local<Context> context);
所以似乎新版本的 v8 需要将 GetFunction 传递给上下文?没有把握。我不是 JS 程序员,也不是 C++ 程序员。我想如果它很简单,比如安装一些新库?
https://github.com/node-ffi/node-ffi/tree/master/src是我现在主要处理的代码。
你能指出我正确的方向吗?
谢谢。
解决方案
推荐阅读
- java - logback 中的 toString
- python - 从 JSON 文件中删除重复条目 - BeautifulSoup
- python - 如何将多个文件夹中相似的命名文件合并到一个文件夹中,每个文件名
- python - 快速计算在整数范围内定义的函数的总和 - (0,2^52)
- python-3.x - 在 kivy 中不起作用的函数的动态绑定
- apache-spark - 从 Spark 写入镶木地板时如何处理空值
- java - 多线程服务器从一个客户端获取输入并向另一个客户端发送信号
- amazon-web-services - Fluentd S3 输出插件无法识别索引
- ios - 如何正确管理内存堆栈和视图控制器?
- c# - 选择在后面的代码中生成的 NavigationView 的 MenuItem 时出现 UWP 图形故障