JavaScript (ECMA Script)를 C++에서 돌리기 위해서
Google Chrome에 탑재된 V8 Engine을 이용하여 구동하는 방법입니다.
LIB 파일 생성
우선
SVN( http://tortoisesvn.net/downloads ), Python( http://www.python.org/ ), Scons( http://www.scons.org/ )
을 구한뒤 설치하고
환경 변수 설정을 해주었습니다.
1. Visual Studio의 vcvarsall.bat
2. PATH에 C:\Python27;C:\Python27\Scripts (버전에 따라 다릅니다)
폴더를 하나 만들어
http://v8.googlecode.com/svn/trunk
의 경로로 SVN Checkout을 하고
그 폴더에서
scons msvcrt=static mode=release
scons msvcrt=static mode=debug
명령을 통해
v8.lib
v8_g.lib 를 만들었습니다.
Visual Studio에서 V8을 사용하는데 필요한 세팅
1. 라이브러리
기본적으로 v8을 사용하는데
v8.lib;winmm.lib;Ws2_32.lib
세개의 라이브러리 파일이 필요하며,
디버그 모드 일 경우 v8_g.lib를 사용해야합니다.
2. 타입형
유니코드를 사용할때 v8에선 wchar_t 대신 unsigned short를 사용하기 때문에
/Zc:wchar_t- 옵션(wchar_t를 기본 제공 형식으로 처리를 '아니요'로 설정)을 주셔야 합니다.
TestProject
1. Hello, World!
JSTest_HelloWorld.zip의 TestJavaScript.cpp를 참고해주세요.
(http://code.google.com/apis/v8/get_started.html 과 동일합니다)
VS2010으로 제작되었으며
디렉토리 경로를 위를 참고해서 재 설정 해주셔야 합니다.
2. JS Testor
MFC 기본 다이얼로그 창에 v8을 얹은 파일입니다.
JS_Tester.7z
의 JS_TesterDlg.cpp 부분만 참고해 주세요.
위의 Hello, World!와 근본적으로 다른건 없으며 Ansi대신 유니코드 문자열을 사용하는 점만 다릅니다.
역시 디렉토리 경로를 재 설정해 주어야 합니다.
이렇게 만들어진 프로그램들은
ECMA Script의 모든 기능을 사용할 수 있습니다.
참고 : http://code.google.com/apis/v8/
-뱀다리
v8을 static 모드로 제작할 경우 대략 1.5MB 정도의 용량이 추가되며
VS2010의 MFC도 static모드로 만들 경우 여기에서 1.5MB가 더 추가 되므로
VS2010에서 MFC와 v8을 동시에 사용할 경우엔 3MB 라는 아름다운 용량이 나오게 됩니다 ㄱ-
-뱀다리
근데 이게 문서를 적어야 했을 정도로 어려운 내용인가?
3. Simple JS API
_alert와 print 함수를 JavaScript 내부에서 쓸 수 있도록 만든 파일입니다.