C#は電気羊の夢を見るか?(引っ越し中)

dtiブログが閉鎖とのことでhttp://tanocs.blog.fc2.com/へ引っ越します。

知らんかった・・・

bool型って初期値があって、宣言すれば勝手にfalseになるそうな。
コンストラクタで一生懸命初期化してたよ・・・
このエントリーをはてなブックマークに追加
LINEで送る

VC#2010EEで対象のフレームワークが変更できない時の対処方法

現在XNA4.0化を進めていたのですが、いくつかハマったので情報として残しておく。


参照アセンブリ "Microsoft.Xna.Framework.Content.Pipeline,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553" は、
現在のターゲット フレームワーク ".NETFramework,Version=v4.0,Profile=Client" 内にない
"Microsoft.Build.Utilities.v4.0, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a" に依存するため、解決できませんでした。
ターゲット フレームワーク内にないアセンブリへの参照を削除するか、
プロジェクトを再ターゲットしてください。

上記エラーメッセージが表示された時の対処方法として
XNA4.0ではデフォルトがおそらく
[.NET Framework 4 Client Profile]なので
これを[.NET Framework 4]としたい。

しかし、VC#2010 Expressだと
『プロジェクトプロパティ→アプリケーションタブ→対象のフレームワーク』から変更ができない。

そこでコンパイルターゲットをExpress Editionで変更するのと同じ方法で、
エラーが出ているプロジェクトファイル(*.csproj)を適当なテキストエディタで開き
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
となっているのを
<TargetFrameworkProfile></TargetFrameworkProfile>
と変更すれば良い。

蛇足として、この方法では『無印→Client』の逆方向への変換はできなかった。


XNA4.0化を対応していると、全体的に煩わしさを取り除くことに注力しているなぁという印象。
その経緯には携帯端末への対応のため、どうしても処理を単純化せざるを得なかった背景もあるように思う。

しかし、この単純化が原因でDirectXにほど近い機能のいくつかが削除されてしまった。
最も痛手だったのはFillMode.Pointの廃止。
これを利用して頂点シェーダからGPGPUを実装していただけに、完全に足元を失ってしまった。
どうにか実現できないかと、あれこれやってみたが、どうにもダメっぽい。

DirectXからFillModeの設定変更を無理やりラップしてみて、
ダメそうならSlimDXへの移行を検討する予定。
このエントリーをはてなブックマークに追加
LINEで送る

Windows7で64bit版WindowsMediaEncorder9を使う

事の始まりは、自分の周りが「TERAやるぞ!」と騒ぎ出し、
「じゃぁ、とりあえず・・・」と自分も持っていたアカウントでベータの抽選にとりあえず登録した。
そしたら自分だけ当選するという事態に見舞われ、配信しろ!と言う事になった。

しかし、不特定多数への配信はまずかろうということで、
何年かぶりにWMEのお世話になることになった。

ところが、ニューマシンは64bitのWin7。
案の定つまずきまくったので配信にいたるまでの方法をメモっとく。


まず、以下の二つを用意

Windows Media Encoder 9 Series x64 Edition
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=cc41218d-7e37-4546-bf0b-1276959ee3ef

SCFH DSF
http://mosax.sakura.ne.jp/fswiki.cgi?page=SCFH+DSF



設定を終え、さぁ起動というところで以下のエラーが出た場合の対処
パラメータが間違っています(0x80070057)



問題はwmex.dllがシステムに登録されていないのが原因ということで
regsvr32にて登録を行うのだが、
regsvr32 "C:Program FilesWindows Media ComponentsEncoderwmex.dll"
というような半角空白を含むパスは、レガシーな指定方法の名残で指定できない。

そこで
regsvr32 "%programfiles%Windows Media ComponentsEncoderwmex.dll"
というような方法で指定ができるとのこと。
多分デスクトップとかシステムフォルダの一部も応用で指定できるんだろうなぁと思う。


しかしながら、これも実行すると以下のエラーが出る

モジュール"C:Program FilesWindows Media ComponentsEncoderwmex.dll"は読み込まれましたが、DllRegisterServerへの呼び出しはエラーコード 0x80070005 により失敗しました。
この問題の詳細については、エラーコードを検索語として入力してオンラインで検索してください。



これは管理者権限を持たないレベルでコードが実行されたかららしいので、面倒だが、スタートメニューより
すべてのプログラム→アクセサリ→コマンドプロンプト と辿り
コマンドプロンプトを右クリック”管理者として実行”で起動する。
そして先程のコマンドをペーストしてやればようやく登録が完了する。


よしこれでOKかと思いきや、まだダメ。

ソース 'ソース 1'のセットアップ中に次のエラーが発生しました。
パラメータが間違っています。(0x80070057)


等というエラーが出た場合、そいつはステレオミックスが無いからとのこと。
あぁ、そういえばWindows付属標準ドライバで放置したままだったので、最新のメーカードライバを入れてステレオミックスが・・・無い!


しまった、非対応のモデルだったのかと思いきや、
同じマザーでWindowsXPでは出来てるっぽいブログを発見・・ドライバが違った?

とよくよく調べてみればWindows7では、これを標準で隠匿するそうな・・・なんでそんな仕様にした。


そんな訳で以下の画像を参考に設定してくりゃれ。




これでようやくできたよ・・・長い道のりだった。
このエントリーをはてなブックマークに追加
LINEで送る

 | HOME | 

PAGE TOP ▲

Appendix

■春条

■春条

生息地は愛知
車と甘い物が好きな31歳
特技は無限昼寝

MONOからSharpDXを使う
変態的な手法で、
.NET Frameworkを使わずに
ゲーム作りやってます。

Search

Calender

« | 2011-07 | »
S M T W T F S
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 - - - - - -

Twitter

Recent Entries

DTIブログポータルへ
このブログを通報
Report Abuse

利用規約