Utf8Value error C2661: 没有重载函数接受 2 个参数
Utf8Value error C2661: No overloaded function takes 2 arguments
我创建了一个带有本机代码的节点模块。我使用 v8::String::Utf8Value::Utf8Value
,在 documentation 中写着它需要两个参数。
所以我用
Isolate * isolate = info.GetIsolate();
Local<Context> context = isolate->GetCurrentContext();
Local<Array> array = Local<Array>::Cast(info[0]);
MaybeLocal<Value> maybeIndex = array->Get(context, 0);
Local<Value> index = maybeIndex.ToLocalChecked();
// This is the important line
String::Utf8Value path(isolate, index);
当我开发模块时,没问题,npm install
构建它,travis 也是如此。
但是当我想在应用程序(电子)中使用这个模块时,当我 运行 .\node_modules\.bin\electron-rebuild.cmd
构建我的模块时,它失败并显示 error C2661: No overloaded function takes 2 arguments
for v8::String::Utf8Value::Utf8Value
.
我不知道我错过了什么,所以如果有人知道我发生了什么事就太好了。
您可以在 Github 上看到代码,特别是最后一次提交 here
信息:
- 该模块仅 Windows
- 我使用的是 Node 12,并尝试将其升级到 13,没有任何变化
- node-gyp 在构建我的模块时是 5.0.5 版,在通过 electron-rebuild
构建时是 6.0.1 版
您要构建的 Electron 版本是什么?古代 V8 版本没有 Utf8Value
的双参数版本,但自从 6.2 分支(2017 年夏季)以来它就存在了。因此,如果您的基于 Electron 的应用程序非常旧,那么这将解释它并更新它应该修复它。
我创建了一个带有本机代码的节点模块。我使用 v8::String::Utf8Value::Utf8Value
,在 documentation 中写着它需要两个参数。
所以我用
Isolate * isolate = info.GetIsolate();
Local<Context> context = isolate->GetCurrentContext();
Local<Array> array = Local<Array>::Cast(info[0]);
MaybeLocal<Value> maybeIndex = array->Get(context, 0);
Local<Value> index = maybeIndex.ToLocalChecked();
// This is the important line
String::Utf8Value path(isolate, index);
当我开发模块时,没问题,npm install
构建它,travis 也是如此。
但是当我想在应用程序(电子)中使用这个模块时,当我 运行 .\node_modules\.bin\electron-rebuild.cmd
构建我的模块时,它失败并显示 error C2661: No overloaded function takes 2 arguments
for v8::String::Utf8Value::Utf8Value
.
我不知道我错过了什么,所以如果有人知道我发生了什么事就太好了。
您可以在 Github 上看到代码,特别是最后一次提交 here
信息:
- 该模块仅 Windows
- 我使用的是 Node 12,并尝试将其升级到 13,没有任何变化
- node-gyp 在构建我的模块时是 5.0.5 版,在通过 electron-rebuild
您要构建的 Electron 版本是什么?古代 V8 版本没有 Utf8Value
的双参数版本,但自从 6.2 分支(2017 年夏季)以来它就存在了。因此,如果您的基于 Electron 的应用程序非常旧,那么这将解释它并更新它应该修复它。