WindowsでV8のサンプルをコマンドラインでビルドして動かす
こんにちは暖かくなると奥さんの活動が活発化して、毎週どこかに出歩くようになり、今週もその 例外にもれず、子供たちは映画を見に行ったようで、自分は留守番してます。@kjunichiです。
背景
plv8の昨年のプルリク、当時のV8だとSpectreやMeltdownの影響を受けてしまう。 そのまま放置ももったいないので、最新のコードに対応すべく、プルリクを更新しようと考えている。
今回はその第一歩として、plv8-2.3.0で採用されている版のV8をWindows環境で 動かすことを目標とした。
nugetでV8の取得
nuget.exe本体は
から取得できる。
nuget.exeをインストールして、以下を実行して、カレントディレクトリ配下に コンパイル済みのv8を取得する。
nuget install v8-v141-x64 -Version 6.4.388.11
実行すると、ヘッダと.libファイルの入ったv8-v141-x64.6.4.388.11というフォルダと dllが入ったv8.redist-v141-x64.6.4.388.11とうフォルダの2つが配下に作成される。
V8のサンプルコードの入手
linux boxでV8のビルドガイドに従い、ソースをfetch後、git checkout時にバージョンを上記の「6.4.388.11」として指定して取得する。
cl.exeで-lや-L相当の指定はどうするんだっけ
/linkの後にリンカーへのオプションを指定できる模様。
-L相当のオプションは/LIBPATH:だった。 -l相当のオプションは分からず、直接指定して対応した。
cl /EHsc hello-world.cc /Iv8-v141-x64.6.4.388.11 /I v8-v141-x64.6.4.388.11\include v8.dll.lib v8_libbase.dll.lib v8_l ibplatform.dll.lib /link /LIBPATH:v8-v141-x64.6.4.388.11\lib\Release
動かない
こうして、作成されたexeファイルを実行するも以下のようなエラーダイアログが表示され、 実行できない。
解決方法を探る
のREADMEを読んでも、VS2017ならライブラリを追加するだけで、必要なことは他になくて、簡単にV8を組み込めるよ。と 記述しかなく、困った。
仕方ないので、VS2017を立ち上げて、プロジェクトを作って動かしてみたら、 なんとなくわかった。
作成したexeファイルと同じ階層にdll等が置かれていた。 真似して、コマンドラインで作業して作成したexeと同じディレクトリにdllやら.datファイルを コピーした。
copy v8.redist-v141-x64.6.4.388.11\lib\Release\*.* .
これで、動かうようになった。