3

こんにちは、私は 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 ビルド中に失われたり表示されたりしますか? 私は何か間違ったことをした?それを達成する方法はありますか?

4

4 に答える 4

2

nodejs プロジェクトのアドオンを作成するために N-API を学習しようとしていますが、同じ問題が発生しました。追加すると、コード#include <iostream>std::cout使用できるようになりました。node path_to_file.jsnodejs プロジェクトの場合と同じように呼び出してコードを実行すると、データがコンソールに正常に出力されます。あなたが NAN を使用していて、おそらくかなり前にこの問題を克服していることは知っていますが、検索結果にこれが表示され、私のような初心者には適切な回答がなかったので、この回答を提供することが重要だと感じました。

于 2018-01-24T15:29:48.810 に答える
1

代わりにログ ファイルに書き込むことをお勧めします (std::cout のリダイレクトは面倒です)。

std::ofstream logFile("logfile.txt");
logFile << "set method called";
于 2015-12-17T15:53:08.600 に答える
0

ウィンドウにある場合は、別のコンソール ウィンドウを作成してみることができます。次に、コンテキストをそのウィンドウにバインドし、印刷をそこにリダイレクトします。

またはファイルに書き込みます。

于 2015-12-17T15:46:59.847 に答える
0

コマンドラインからバイナリを直接起動したcout << "some text"場合にのみ機能します。ノード内で使用しているように見えるので、そうではないと思います。そのため、ノード ライブラリからいくつかのログ出力方法を見つける必要があります。

于 2015-12-17T15:42:44.620 に答える