※仕事でManaged DirectXを動かすまでに一苦労したので、備忘録的にメモ。
最近、仕事でManaged DirectXを使用することになったのですが…
全く動かない…というか、正常に動作しない。
とりあえず、やった事といえば、
上記のこと。
ネットで情報としてあるのはこれくらいなので、これを1つずつ実行する度にC#.netのコードをビルドして実行、を行ったけど、いずれも実行後にプロジェクトがうんともすんとも言わなくなる。
かと言って、コードが間違っている事はありえない。(だって
Device device = new Device();
っていう1行だけだし…)
「Windows10だともうDirectX9は動かないのかも」とも思いましたよ。ええ。
(マイクロソフトも、もう推奨はしていないかもしれませんが…)
でも別で入手したC++のプログラムを動かしたら正常に動くし、もし本当にそうなら絶対ネットに類似情報がアップされてるはずだから、それはありえない。
でも上記コードが記載されたモジュールを読み込みした時点で確実に固まるから「ひょっとして、マシンの相性が悪い?」とか思ったりしたのですが、結局原因は分からず…
だったのですが、諸事情で1日会社を休んだのですが、ふと「読み込みの時点で落ちるって事は、インストールに失敗したのか?」と思い、ちょっと調べたら、すごいあっさり解決(まあ、会社休んだので、確認したのは翌日なんですが…)
まあ結論から言えば、DirectXうんぬんは全く関係なく、.net Frameworkの互換性の問題で、下記ページの内容を実施したらあっさり解決しました。
上記のように、「app.config」のstartupタグで「useLegacyV2RuntimeActivationPolicy=true」を指定すればOKです。
こういうハマっていた事が解決する快感ってのは、この仕事ならではではないでしょうか?(ていうか、もっと早く見つけろよ…)
ていうか、こういうドハマりする事って「ふと何気ない時に解決することが多い」って言いますが、本当にその通りだなあ、と思いました。
ていうか、入社してまだ2週間も経ってないのに、良く休めたなあ。