【发布时间】:2018-02-21 11:41:13
【问题描述】:
基本上,我正在使用他们的 NAPI 功能将现有的 C++ 文件与我们的 javascript / 节点集成。我让它在一个测试 C++ 文件上工作,所以我知道我的设置工作正常。然而,在实际的 C++ 文件中,它被设计为使用命令行中的 argc 和 argv 从命令行运行。基本上我只需要从我的其他函数内部调用 C++ 中的 main 方法,这意味着没有命令行。所以我必须传入 argc 和 argv 的值。 argc 只是一个 int,这很容易,但是 argc 是一个 char ** 类型,从我的研究来看,它看起来像是一个字符数组,又名字符串?
这是我的 c++ 文件底部的当前代码
void Init(Env env, Object exports, Object module) {
exports.Set("main", Function::New(env, main(2,{"test","test2"})));
}
NODE_API_MODULE(addon, Init)
argc 值工作正常
我正在尝试为 argv 创建一个临时/测试值以传入,但在弄清楚如何使用我的值创建 char ** 类型的数组时遇到问题。
【问题讨论】:
-
这基本上就是我想要弄清楚的。如果我尝试“测试测试”,这就是我得到的“注意:候选函数不可行:第二个参数 int main(int argc, char *argv[ ])"
-
不,那是我的愚蠢建议。我看到您可以声明
napi_value argv[2]然后将项目推送到该数组,但是我没有使用它。我可能会建议尝试main(2,["test1","test2"])或main(2,&["test1","test2"])。 -
重要有趣的事实:在程序中调用
main是未定义的行为。可能会发生奇怪的蓝精灵。您最好将main中的代码移动到具有相同参数的另一个函数,并让main和您的模拟调用这个其他函数。
标签: c++ arrays node.js node-gyp