Feeds:
文章
迴響

Archive for 2012 年 11 月

目前大部分都建議用 NTFS 使磁碟空間更有效的運用

但不幸 FAT 格式比較容易實現,我家的電視只認得他

所以只好轉 FAT32, Windows 內建工具無法順利轉換

目前網路推薦 Fat32Formatter 1.1

真是簡單好用…. 2 步驟就可搞定…

Read Full Post »

系統環境

  • Windows 7(64bits)
  • Python 2.7.2
  • Node 0.8.9
  • Visual Studio 2012

 

目錄結構

– binding.gyp
– hello.cc
– test.js
+ build
    + Release
        – hello.node

 

hello.cc

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

using namespace v8;

Handle<Value> MethodArgs(const Arguments& args) {
HandleScope scope;

printf(“%d\n", args.Length());

if (args[0]->IsString() && args[1]->IsNumber() &&
args[2]->IsNumber() && args[3]->IsBoolean()) {

printf(“%s %d %f %d\n",
*String::AsciiValue(args[0]->ToString()),
args[1]->ToInteger()->Value(),
args[2]->NumberValue(),
args[3]->ToBoolean());

}

return scope.Close(Undefined());
}

Handle<Value> Add(const Arguments& args) {
HandleScope scope;

if (args.Length() < 2) {
ThrowException(Exception::TypeError(String::New(“Wrong number of arguments")));
return scope.Close(Undefined());
}

if (!args[0]->IsNumber() || !args[1]->IsNumber()) {
ThrowException(Exception::TypeError(String::New(“Wrong arguments")));
return scope.Close(Undefined());
}

Local<Number> num = Number::New(args[0]->NumberValue() +
args[1]->NumberValue());
return scope.Close(num);
}

Handle<Value> Method(const Arguments& args) {
HandleScope scope;

printf(“%d\n", args.Length());

if (args[0]->IsString() && args[1]->IsNumber() &&
args[2]->IsNumber() && args[3]->IsBoolean()) {

printf(“%s %d %f %d\n",
*String::AsciiValue(args[0]->ToString()),
args[1]->ToInteger()->Value(),
args[2]->NumberValue(),
args[3]->ToBoolean());

}

return scope.Close(String::New(“world"));
}

void init(Handle<Object> target) {
NODE_SET_METHOD(target, “hello“, Method);
NODE_SET_METHOD(target, “add“, Add);
NODE_SET_METHOD(target, “testArgs“, MethodArgs);
}

NODE_MODULE(hello, init)

 

 

binding.gyp

{
“targets": [
{
“target_name": “hello",
“sources": [ “hello.cc" ]
}
]
}

test.js

var hello_module = require(‘./build/Release/hello.node’);
console.log(hello_module.hello());
console.log(hello_module.add(99, 1));
console.log(hello_module.testArgs(‘str’, 100, 300, true));

 

 

初始

node “C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" configure

編譯

node “C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" build

測試

node test.js

執行結果

參考資料

[1] http://snoopyxdy.blog.163.com/blog/static/601174402012102391344617/

Read Full Post »