ページ

2012年3月9日金曜日

DirectX SDK June 2010のインストール失敗。。。

以前はうまく行っていたと記憶していたのですが、新しい環境にいろいろセットアップしていた時に嵌りました。

現段階での最新版である、DirectX SDK June 2010をインストールした際に、最後にエラーが出てインストールが中途半端にされてしまう問題です。

下記のリンク先に同じ症状が報告されていました。

  DirectX SDK june 2010 がerror code s1023で失敗する問題

具体的にはVisual C++ 2010の再配布ファイルのバージョンチェックが正しく判定されずに、Direct X SDKのインストーラがエラーになるようです。

いったん、VC++ 2010の再配布ファイルをアンインストールしてから、DirectX SDKを入れることで解決できました。

それにしても、Windows SDK 7.1のときも同じようなのに嵌ったので、この手の地雷は今後も記憶に残しておいたほうがよさそうです。

2012年3月8日木曜日

Windows 7 のフォルダオプションの設定の仕方

最近、Windows7に乗り換えて徐々に環境を整えています。

永らくVistaが続いたので、インターフェイスの変化に対応できずにいました。
そんななか、exeやらmsiなど拡張子がデフォルトでは表示されなくて、どれを選択してよいか直感的に迷ってしまうのに違和感を覚えていたので、これを機に表示されるように設定を変えたいと思います。

変え方は、XPやVistaではフォルダオプションから行っていたと思うのですが、Win7では場所が多少変わっているみたいで、調べてみました。


まずはフォルダを開いた際の左上の”整理”メニューからです。



”整理”→”フォルダーと検索のオプション”で”フォルダーオプション”ダイアログを開きます。



”フォルダーオプション”ダイアログの”表示”タブから下側のブロックの”詳細設定”の”登録されている拡張子は表示しない”のチェックボックスをはずします。

上側のブロックの”フォルダー表示”の”フォルダーに適用”ボタンを押すことですべてのフォルダにこの設定が適用されます。

これで登録済みの拡張子が表示されるようになります。

入り口ひとつ変わっただけで、設定する流れは変わっていないのに少々戸惑いましたが、一件落着です。

2012年2月8日水曜日

C++からJavaScriptへ変換??

v8のビルドエラーを調べていてたまたま見つけたサイトです。 

C++からJavaScriptへ変換を行うツールの導入が記述されています。 詳しくは読んでいないので、リンクだけメモ。

  emscriptenでC++からJavaScriptへ変換しよう 

あとで見てみよう。 希望としては双方向のコンバータが欲しいところである。。。

SConsの設定で色々はまる - v8 をビルドする

google chromeのjavascriptエンジンであるv8をビルドする際にSConsの設定であれこれはまって調べたものを簡単にまとめます。
環境としてはVS2008+Windows Vista 64bitとなります。

SConsがPython3系をサポートしていないので、PythonはPython2.7.2を落としてきました。

パッケージをダウンロードして来てドキュメントどおりに実行すると

※エラーコード編集中

といったエラーではまりました。

これはPythonを複数入れていたために実行時の環境変数によって起こった問題のようです。

確認としては以下のようにします。
1.PATHにPythonへのパスを追加します。
set PATH=C:\Python27;C:\Python27\scripts;%PATH%;
2.PYTHONHOMEとPYTHONPATHを確認します。
例を挙げるとtraclightning等を入れていると、PYTHONHOME と PYTHONPATH が
set PYTHONHOME=C:\TracLigtht\python
set PYTHONPATH=C:\TracLigtht\python\DLLs\;C:\TracLigtht\python\Lib;C:\TracLigtht\python\Lib\plat-win;C:\TracLigtht\python\Lib\lib-tk;C:\TracLigtht\python\Lib\site-packages
となっていたりします。 

これを
set PYTHONHOME=C:\Python27
set PYTHONPATH=C:\Python27\DLLs\;C:\Python27\Lib;C:\Python27\Lib\plat-win;C:\Python27\Lib\lib-tk;C:\Python27\Lib\site-packages
とします。

 Pythonの環境変数の問題は以上となります。 

次に、clが見つからないといったエラーが出るので、SCons へのオプションを指定します。

参考としては

http://code.google.com/p/v8/wiki/BuildingOnWindows

の Paths on 64-bit Windows Vista の Explicit Visual Studio 2008 paths に記載されているようにVSの各種インストールパスを指定します。 具体的には以下のようになります。

 > scons env="PATH:C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools,INCLUDE:C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include;C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Include;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include,LIB:C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib;C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Lib;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib" d8 

VS2008のコンソールバッチ上でやっても以上のように指定しないとうまくいかないので、長くなるがオプション指定を行いました。 

最後のd8はビルドターゲットで、ダミーとしてこれを指定しないと、以下のようなリンカエラーが出てビルドが完了しません。


   ライブラリ v8preparser.lib とオブジェクト v8preparser.exp を作成中
conversions.obj : error LNK2001: 外部シンボル ""public: virtual __thiscall v8::StartupDataDecompressor::~StartupDataDecompressor(void)" (??1StartupDataDecompressor@v8@@UAE@XZ)" は未解決です。
conversions.obj : error LNK2001: 外部シンボル ""void __cdecl v8::RegisterExtension(class v8::Extension *)" (?RegisterExtension@v8@@YAXPAVExtension@1@@Z)" は未解決です。
conversions.obj : error LNK2001: 外部シンボル ""public: static class v8::Local __cdecl v8::String::New(char const *,int)" (?New@String@v8@@SA?AV?$Local@VString@v8@@@2@PBDH@Z)" は未解決です。
conversions.obj : error LNK2001: 外部シンボル ""public: __thiscall v8::Unlocker::Unlocker(class v8::Isolate *)" (??0Unlocker@v8@@QAE@PAVIsolate@1@@Z)" は未解決です。
conversions.obj : error LNK2001: 外部シンボル ""public: void __thiscall v8::Template::Set(class v8::Handle,class v8::Handle,enum v8::PropertyAttribute)" (?Set@Template@v8@@QAEXV?$Handle@VString@v8@@@2@V?$Handle@VData@v8@@@2@W4PropertyAttribute@2@@Z)" は未解決です。
conversions.obj : error LNK2001: 外部シンボル ""public: void __thiscall v8::Isolate::Exit(void)" (?Exit@Isolate@v8@@QAEXXZ)" は未解決です。
conversions.obj : error LNK2001: 外部シンボル ""public: void __thiscall v8::Isolate::Enter(void)" (?Enter@Isolate@v8@@QAEXXZ)" は未解決です。
v8preparser.dll : fatal error LNK1120: 外部参照 8 が未解決です。
scons: *** [v8preparser.dll] Error 1120
scons: building terminated because of errors.
conversions.obj : error LNK2001: 外部シンボル ""public: __thiscall v8::Locker::Locker(class v8::Isolate *)" (??0Locker@v8@@QAE@PAVIsolate@1@@Z)" は未解決です。


この問題は

http://code.google.com/p/v8/issues/detail?id=1747

にさらっと書かれているのですが、v8のビルド環境をGYPというビルド環境へ移行するためにSCons自体のメンテナンスが現在されていないためのようです。

とりあえず、ここまででdllとチェック用のjavascript shellであるd8.exeの生成が完了しました。