※ ChatGPTを利用し、要約された質問です(原文:32bitで作ったアプリケーションの64bit環境へのコンパイル)
32bitアプリケーションの64bit環境へのコンパイル方法
このQ&Aのポイント
32ビット環境で動作するアプリケーションを64ビット環境で正常に起動するためには、x64用にコンパイルする必要があります。
VC++2008EEやWindowsSDK,DirectX9を使って組んだアプリケーションのx64向けのコンパイルはできませんが、VC++2010EEとWindowsSDK7.1をインストールすることで対応できます。
コンパイルしたアプリケーションは64ビット環境で起動できますが、処理が重くなり、動作も低速になる可能性があります。原因を特定するためには、ソースコードの修正が必要です。
32bitで作ったアプリケーションの64bit環境へのコンパイル
32bitで作ったアプリケーションの64bit環境へのコンパイル
現在、32ビット環境で作ってWindowsXPで正常に動作しているアプリケーションを、
Windows7などの64ビット環境でWOW64を介せずに起動できるように、x64用に
コンパイルしようと考えています。
今まではVC++2008EEとWindowsSDK,DirectX9を使って組んでいましたが、
ExpressEditionだとx64向けのコンパイルができないと言うことで、2010EEと
WindowsSDK7.1をインストールし、その後構成マネージャで設定をx64にして
XP32bit上でコンパイルしました。ソースコードは全く手を加えない状態だったので、
何かエラー・警告があるかと思いましたが、警告も出ずコンパイルは通り、
64ビット環境で起動することも出来ました。
しかし、起動した直後に処理が非常に重くなり、FPSも10~20程度ではないかと
言うほどに動作がもっさりとしてしまいます。
起動しないわけではないし、動き自体も低速ながら、期待されたもしくは
XP32bitで起動したときと同じように動いているように見受けられます。
よく見るポインタの長さに関しての問題等も、そもそもあった場合エラーが出て
落ちてしまうのではないかと思います。現状ソースを修正するにしても、
エラーも何も出ていないためどこにどう手を加えたらいいのか分かりません。
なにか原因となるものに心当たりがあればご教授いただけると幸いです。
使用ソフトは上記のようにVC++2008と2010、WinSDK,DirectXともにSDKは
(おそらく)最新版でリンクするライブラリのパスにはx64のフォルダを指定、
プリプロセッサの設定で_WIN64を定義しています。
コンパイラも、起動出来てはいるので64ビットのコードを吐くものに
設定されていると思います。