その2プログラミング2009.10.28基本的事項まずは知っておかなくてはいけないこと。外部マニフェストはexeのみに適用される。そのexeが必要とするdllらには適用されない点に注意WindowsXP環境では、外部マニフェストのほうが埋め込みマニフェストよりも優先される2003より優先順序が逆転した。再頒布ランタイムパッケージがインストールできない環境で発生した。インストールできない環境とは、ユーザーがゲスト権限くらいしかない場合を指す。しても事情により入れられないとか。このときに、exeとdllと同フォルダにおいて、そのプライベートアセンブリとして、VCランタイムを配置した。このときに、最近のWindowsUpdateが適用されたバージョンを置いた。(VC90.30729.4148バージョン)そして、exeがこのバージョンのランタイムを使うように、外部マニフェストファイルを作成して実行をさせようとした。この結果が、昨日のエラーを引き起こしていた。理由は、dllにはこのマニフェストの影響が及ばないからである。320729.4148バージョンを要求する。不整合がおこり、ローダーの段階で失敗してしまう。その結果、exeが実行されることなく強制終了されてしまう。試した環境ではエラーダイアログすら出ない。簡単に解決する方法がある。ひとつは、VisualStudio2008,およびSP1環境のデフォルト動作では、RTM版のランタイムにバインドされる。これに対応するランタイムを入手し、それをプライベートアセンブリとして使用する。セキュリティ関係で問題になりそうな気もするが仕方ない.もう一つは、最初から埋め込みマニフェストで最新バージョンを使うように全部アプリケーションをリビルドする。これを行うとビルドした環境の最新のバージョンへバインドされる。30729.4148にバインドされる。dllからexeまでがこれに依存するようになるため、VisualStudioのインストールディレクトリから再配布ランタイムをコピーして使用すればよい。最後の方法は、exeでやったように、dllに対しても依存するアセンブリ情報を強制変更する方法である。いうファイルを作成する。ポイントは”2′′という部分。このファイルにより、目的のバージョンへバインドがリダイレクトするように設定すれば、dllとexeのバージョン要求不一致を解決できる。CONNECTで記述があったためおそらく正式な方法だと思う。日本語での情報が見つからなかったためここに書いてみた。-導入編2-前回はSDKなしの状態で、OpenCLの関数を実行して、OpenCL実行の際のデバイスの情報を取得する部分まで行いました。今回はOpenCLのコンテキストを生成して配列の加算くらいをやってみたいと思います。内部で使われているライブラリも更新しました。環境に正式に対応したことです。フルスクリーンのサンプルってほとんど見かけないので作ってみました。データが返ってくるまでを記述した例になります。話があったことでつい購入に踏み切ってしまいました。VRAMに転送し、普段使うのはその転送後のテクスチャという方式を考えてみました。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントデータの処理方法の詳細はこちらをご覧ください。ん日記.タイトルとURLをコピーしました。