Я обнаружил, что * v8 :: String :: Utf8Value (args [0 ] -> ToString()) возвращает правильную строку на узле 0.8.2 32-bit и не возвращает правильную строку на узле 0.8.8 64-bit.* v8 :: String :: Utf8Value (args [0] -> ToString()) не возвращает строку node.js аргумент addon
кто-нибудь понимает, почему?
Мой node.js аддон выглядит следующим образом:
#define BUILDING_NODE_EXTENSION
#include <node.h>
#define MAX_OUTPUT_BUF 80
extern "C" char *do_sqlsig(char *in);
using namespace v8;
Handle<Value> Sqlsig(const Arguments& args) {
HandleScope scope;
char *c_arg, *ret;
if (args.Length() < 1) {
ThrowException(Exception::TypeError(String::New("Wrong number of arguments")));
return scope.Close(Undefined());
}
c_arg = *v8::String::Utf8Value(args[0]->ToString());
ret = c_arg; //do_sqlsig(c_arg);
return scope.Close(String::New(ret));
}
void Init(Handle<Object> exports) {
exports->Set(String::NewSymbol("sqlsig"),
FunctionTemplate::New(Sqlsig)->GetFunction());
}
NODE_MODULE(sqlsig, Init)
Как вы можете видеть, что я пишу оболочку для функции C, do_sqlsig. Я знаю C очень хорошо и очень мало знаю о C++