C++ node.js模块. cout不工作?

jjhzyzn0  于 2022-12-12  发布在  Node.js
关注(0)|答案(5)|浏览(140)

你好,我是一个C++的新手,试图修改一个现有的本机节点模块。
我试图在模块内添加couts来打印我认为对我有用的信息。

NAN_METHOD(Context2d::SetFillRule){
  Context2d *context = Nan::ObjectWrap::Unwrap<Context2d>(info.This());
  cairo_t *ctx = context->context();
  String::Utf8Value str(info[0]);
  cout << "set method called";
  ...
}

前一个方法可以工作,但是cout从来没有显示过。它在node-gyp构建过程中丢失/显示了吗?我做错了什么吗?有什么方法可以完成它吗?

polhcujo

polhcujo1#

我正在学习N-API为nodejs项目制作插件,但遇到了同样的问题。添加#include <iostream>使std::cout可以在我的代码中使用。当我像对任何nodejs项目一样调用node path_to_file.js运行代码时,它成功地将我的数据打印到控制台。我知道您正在使用NAN,并且可能很久以前就已经克服了这个问题。但我觉得给予这个答案很重要,因为这个答案出现在我的搜索结果中,而对于像我这样的初学者来说,没有一个好的答案。

xj3cbfub

xj3cbfub2#

我建议将其写入日志文件(重定向std::cout很麻烦)。

std::ofstream logFile("logfile.txt");
logFile << "set method called";
eufgjt7s

eufgjt7s3#

Node.js C++加载项中的std::cout <<通常应该打印到控制台(node进程的stdout)。
如果它没有出现,很可能是分段错误,因为内存(示例生命周期)管理不善。它会 * 静默地 * 终止整个node进程。

w8biq8rn

w8biq8rn4#

cout << "some text"只有在你直接从命令行启动你的二进制文件时才能工作。我认为情况并非如此,因为你似乎是在节点内部使用它。所以你应该从节点库中找到一些日志输出方法。

ibrsph3r

ibrsph3r5#

如果它是在windows中,你可以尝试制作另一个控制台窗口。然后将你的contex绑定到那个窗口,并将打印重定向到那里。
或写入文件。

相关问题