64bit版OS( x64 Windows )でNiVEを動作させる場合の問題点と解決策
※2009/12/02追記
2009/12/02にリリースされたv1.87で、NiVE本体の「32bit専用ビルド」が
リリースされました。この「32bit専用ビルド」を使えば、x64環境でも
NiVEが32bitアプリケーションとして動作するので、この記事にあるような
CorFlagsでの操作をしなくても、問題なくDirectShow入力プラグイン等を
使用することができます。
※この記事は、2009年9月3日にNiVE Wikiのプラグインページに寄せられたコメントと
そこに載っていた【駄文日記】様のページを元にし、さらにググって調べた結果などを
追記してまとめてみたものです。
※筆者は32bit環境なので、実際にここに書いた内容を試したことはありません。
慎重に調べたつもりですが、ネットの情報しか調べていませんし、
細かい点とか色々間違ってるかもしれません。あくまでも参考程度と考えてください。
※Wikiや愛用者スレに寄せられたコメントによると、この方法でうまく動作しているようですが、
これによって何らかの損害が生じても当方は一切責任を負いません。
参考サイトなどを見た上で、すべて自己責任で実施して下さい。
※記事作成時のNiVEのバージョンはv1.86です。
また、DirectShow入力プラグインのバージョンはv1.3です。
その後のリリースではこの操作をしなくても動作するように
なっているかもしれませんので、Readmeなどでしっかり確認して下さい。
■64bit版WindowsでNiVEを動作させる場合の問題点
●「DirectShow入力プラグイン(ds_reader.dll)」などが使えない。
おそらく、
「32bit版のVisual C++ランタイムが必要なプラグイン」
は全て使えないものと思われる。
●他にもVFWOutputでの出力ができない等、色々とうまく動かないことがあるらしい?
(こちらの詳細は不明です)
■原因
NiVE本体の実行ファイル(NicoVisualEffects.exe)は、
「ターゲットCPU=Any」
でビルドされているため、64bit版Windows上では64bitアプリケーションとして動作しようとする。
しかし、DirectShow入力プラグインでは32bit版のライブラリを利用しているため、
64bitアプリケーションからは、それらのライブラリを呼び出すことができない。
※参考ページ: 「とあるコンサルタントのつぶやき」の以下の記事
●.NET Framework アプリケーションの 64bit 対応
●Part 1. 64 ビット Windows OS の基本知識
●Part 2. .NET Framework 2.0 アプリケーションの 64 ビット対応
■解決方法
NiVEが64bitアプリケーションではなく、
32bitアプリケーションとして動作するようにしてやればよい。
これを実現するために、「.NET Framework SDK」に含まれている、
「CorFlags.exe」というツールを利用する。
※参考ページ
MSDN: CorFlags 変換ツール (CorFlags.exe)
■作業手順
●手順1.「.NET Framework SDK」をインストールする
NiVEの実行に必要な
「.NET Framework 2.0 再頒布可能パッケージ」
をインストールしただけでは、目的の「CorFlags.exe」はインストールされません。
.NET開発者向けの「.NET Framework SDK」を別途ダウンロードし、
インストールする必要があります。
※Microsoft Visual Studio 2005 以降(Express Edition を除く) を
既にインストールしている場合は、「.NET Framework SDK」が
一緒に入っているはずなので、別途ダウンロードする必要はないようです。
ええと・・・64bit版Windows向けのSDKは、これになるのかな?
ダウンロードの詳細 : .NET Framework 2.0 SDK 日本語版 (x64)
ダウンロードサイズが464.2MB・・・。かなり大きいですけど仕方ないですね。
とりあえず上記ページに書いてある手順に従って、ダウンロードとインストールを行なって下さい。
●手順2.コマンドプロンプトを起動する
インストールが終わったら、コマンドを実行するための
画面(コマンドプロンプト)を開きます。
◎Visual Studio 2005以降をインストールしてある場合
「スタートメニュー」
→「すべてのプログラム」
→「Visual Studio 200X」
→「Visual Studio Tools」
→「Visual Studio 200X コマンドプロンプト」
◎.NET Framework SDKをインストールしてある場合
「スタートメニュー」
→「すべてのプログラム」
→「Microsoft .NET Framework SDK v2.0」
→「SDK コマンド プロンプト」
※参考サイト
MSDN: SDK のコマンド プロンプト
http://msdn.microsoft.com/ja-jp/library/ms229859.aspx
●手順3.NiVEの実行ファイルに対して、CorFlagsコマンドを実行する
次に、必要なコマンドを実行します。
事前に、NiVEの実行ファイルがある場所を確認しておいて下さい。
ここでは、
D:\Nive\nive1.86\NicoVisualEffects.exe
に置いてあるものと仮定します。
確認したらコマンドプロンプトから、以下のコマンドを実行して下さい。
(NiVEの実行ファイルの場所は自分の環境に合わせて書き換えて下さい。)
corflags D:\Nive\nive1.86\NicoVisualEffects.exe /32BIT+
特にエラーが出ない場合は、これで作業完了です。
署名してあるアプリケーション等だと、
「/Forceをつけろ」
という感じのエラーが出ることがあるようです。
NiVEの場合は出ないらしいですが、もしそういうエラーが出たら、
以下のようにコマンドに/Forceを付け足して実行すればいいようです。
corflags D:\Nive\nive1.86\NicoVisualEffects.exe /32BIT+ /Force
上記の対応により、NiVEは64bitOS上でも32bitアプリケーションとして
動作することになるので、32bit版ライブラリの呼び出しも行なえるようになり、
DirectShowプラグインなども問題なく使えるようになるはずとのことです。
ただし、これで64bit環境での問題が全て解決するのかどうかはよくわかりません。
一般ユーザが450MB強もあるSDKをわざわざ落としてコマンドを実行するのは
大変ですから、次に修正などでNiVE 1.xx系をリリースする機会があれば、NiVE本体を
「ターゲットCPU=x86」
にしてビルドしてリリースしていただけると、喜ぶ人が多そうですね。
(それで解決すると思ってるんですが、あってるかな・・・?)
※2009/12/02追記
v1.87で「32bit専用ビルド」がリリースされました。ありがとうございます!
x64版もしくはAnyCPU版のNiVE v1.xxについては・・・
一部のプラグインが使えなくなることを考えると、
当面は需要は少ない気がするけどどうなんでしょうね。
| 固定リンク
この記事へのコメントは終了しました。
コメント