Javascript node.js C++;插件在Linux和Windows中的运行方式不同 我刚刚开始学习No.js,尤其是C++的ADDN。我稍微修改了hello world示例以了解其工作原理。然后我发现它在Linux和Windows中的运行方式不同

Javascript node.js C++;插件在Linux和Windows中的运行方式不同 我刚刚开始学习No.js,尤其是C++的ADDN。我稍微修改了hello world示例以了解其工作原理。然后我发现它在Linux和Windows中的运行方式不同,javascript,c++,node.js,linux,node.js-addon,Javascript,C++,Node.js,Linux,Node.js Addon,基本上,我添加了一个内部函数,用于将cout输出到控制台。在Linux中,输出是 worldtest yes 但在Windows中,它是 yes worldtest 基本上,输出的顺序是不同的。Windows输出似乎正是我所期望的。你知道我遗漏了什么吗?谢谢 hello.cc: #include <node.h> #include <v8.h> #include <string> #include <iostream> using name

基本上,我添加了一个内部函数,用于将cout输出到控制台。在Linux中,输出是

worldtest
yes
但在Windows中,它是

yes
worldtest
基本上,输出的顺序是不同的。Windows输出似乎正是我所期望的。你知道我遗漏了什么吗?谢谢

hello.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)

在linux和windows中,
cout
似乎是在不同的时间处理的,这就是为什么您会得到不同的排序,相反,如果需要,您应该将所有输出和输出作为一个单元进行缓冲添加
cout.flush()在您的
cout之后
var addon = require('bindings')('hello');

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