0

node.js、特にその C++ アドオンの学習を始めたばかりです。Hello World の例を少し変更して、どのように機能するかを確認しました。その後、Linux と Windows で動作が異なることがわかりました。

基本的には、cout を使用してコンソールに出力する内部関数を追加しました。Linux では、出力は次のとおりです。

worldtest
yes

しかし、Windowsでは、

yes
worldtest

基本的に、出力の順序は異なります。Windows の出力は、私が期待したとおりのようです。私がここで見逃しているアイデアはありますか?ありがとう!

こんにちは.cc:

#include <node.h>
#include <v8.h>
#include <string>
#include <iostream>


using namespace v8;
using namespace std;
string changestring(string tmp);

void Method(const v8::FunctionCallbackInfo<Value>& args) {
  Isolate* isolate = Isolate::GetCurrent();
  HandleScope scope(isolate);
  string tmp=changestring("world");
  const char * c=tmp.c_str();
  args.GetReturnValue().Set(String::NewFromUtf8(isolate, c));

  }

void Init(Handle<Object> exports) {
  Isolate* isolate = Isolate::GetCurrent();
  exports->Set(String::NewFromUtf8(isolate, "hello"),
      FunctionTemplate::New(isolate, Method)->GetFunction());
}

string changestring(string tmp)
{
    cout<<"yes\n";
    return (tmp+"test\n");
    }

NODE_MODULE(hello, Init)

hello.js

var addon = require('bindings')('hello');

console.log(addon.hello()); // 'world'
4

0 に答える 0