javascript — node.js C ++ addon работает по-разному в Linux и Windows

Я только начал изучать node.js и особенно его аддон C ++. Я немного изменил пример Hello World, чтобы посмотреть, как он работает. Затем я обнаружил, что в Linux и Windows он работает по-разному.

По сути, я добавил внутреннюю функцию, которая использовала cout для вывода на консоль. В Linux вывод

worldtest
yes

но в винде это

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)

hello.js

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

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

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]