Linuxなどのメモ書き

V8 JavaScriptエンジンの組み込み


Rev.1を表示中。最新版はこちら

概要

V8 JavaScriptエンジンの組み込みと関数等の追加を試した。

V8の組み込み

まずは標準入力からJavaScriptソースを読み込んで実行するケース。

https://developers.google.com/v8/get_startedに載っているものとほぼ同じで、ソースを標準入力から取得するように修正しただけ。このソースをベースに試していく。

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

using namespace v8;

static void read_file(std::istream& ifs, std::string &content)
{
  content = "";
  std::string t;
  while (!ifs.eof()) {
    getline(std::cin, t);
    content += t + "\n";
  }
}

int main(int argc, char* argv[])
{
  std::string js_str;
  read_file(std::cin, js_str);

  // Create a stack-allocated handle scope.
  HandleScope handle_scope;

  // Create a new context.
  Persistent<Context> context = Context::New();

  // Enter the created context for compiling and
  // running the hello world script. 
  Context::Scope context_scope(context);

  // Create a string containing the JavaScript source code.
  Handle<String> source = String::New(js_str.c_str());

  // Compile the source code.
  Handle<Script> script = Script::Compile(source);

  // Run the script to get the result.
  Handle<Value> result = script->Run();

  // Dispose the persistent context.
  context.Dispose();

  // Convert the result to an ASCII string and print it.
  String::AsciiValue ascii(result);
  printf("%s\n", *ascii);
  return 0;
}

Build手順は省略。以下のtest.jsを読み込ませて実行してみると。

test.js

(function()
 {
   return "test test";
 })();

実行結果

# ./a.out < test.js 
test test

関数のリターン値"test test"が表示される。これで、いろいろ試す準備が整った。



最終更新 2012/08/28 20:29:24 - kztomita
(2012/08/28 20:29:24 作成)


リンク

その他のWiki
Linuxメモ
Xnuメモ

会社
(有)ビットハイブ
受託開発やってます。

よくやる仕事

・Webシステム開発(LAMP環境)
・Linuxサーバー設定関連
サーバー移転作業代行

開発事例にデジタルカタログ/マンガビューワーを追加しました。

draggable.jsのスマホ対応版デモページを追加しました。説明はこちら

検索

Adsense
最近のコメント