トップページ > 過去ログ > 記事閲覧
64ビット版対応アプリケーションの開発
名前:きのこ派 日時: 2011/04/16 17:00

はじめまして。 Visual C++ 2010 ExpressとDXライブラリを使いアプリケーションを開発したのですが、64ビット版に対応させる必要が出てきました。 http://togarasi.wordpress.com/2010/06/02/visual-studio-2010-c-%E3%81%A7-windows-sdk-v7-1-%E3%82%92%E4%BD%BF%E3%81%86%E3%81%AB%E3%81%AF%EF%BC%9F/ http://msdn.microsoft.com/ja-jp/library/9yb4317s.aspx を参考に64ビットプラットフォーム用に設定することまではできたのですが、ビルドしてみると 1>DxLib_d.lib(DxWin.obj) : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64' というエラーが出てしまいました。 色々調べてみたのですが、解決策が見つかりませんでした。 エラーメッセージから、DXライブラリが関係していると思い、こちらに書き込ませていただきました。 DXライブラリを使って64ビット版対応アプリケーションを開発することはできないのでしょうか? もしできるのであれば、なぜエラーが出るのでしょうか? 回答よろしくお願いいたします。

Page: 1 |

Re: 64ビット版対応アプリケーションの開発 ( No.1 )
名前:埴輪 日時:2011/04/17 09:43

Dxライブラリはx86(32ビット)用にプリコンパイルされているので、 x64アプリケーションでは使えません。 しかし、Dxライブラリはソースが公開されているので、 それをx64用にコンパイルしてみてはいかがでしょう。
Re: 64ビット版対応アプリケーションの開発 ( No.2 )
名前:きのこ派 日時:2011/04/17 13:29

返信ありがとうございます。 http://homepage2.nifty.com/natupaji/DxLib/dxdload.html こちらのページの一番下のものをダウンロード、解凍し、ビルドしてみたのですが、ビルドエラーが出てしまいました。 配布しているページに「プロジェクトを開いてビルドするだけで」とあるので、(64ビット用にする以外)何も設定せずにビルドしたのですが、それではだめなのでしょうか? ビルドすると 1>DxWin.cpp(4191): error C2065: 'MOV' : undeclared identifier 1>DxWin.cpp(4191): error C2146: syntax error : missing ';' before identifier 'ESI' 1>DxWin.cpp(4191): fatal error C1003: error count exceeds 100; stopping compilation 1> Generating Code... ここまで出て止まります。 引き続き回答よろしくお願いいたします。 ちなみに、一度32ビット用に戻してコンパイルしようとしたところ、こちらもエラーがでてしまいました。 1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(147,5): error : 必要なファイル "" が見つかりません。 という1行だけ出て終わります。
Re: 64ビット版対応アプリケーションの開発 ( No.3 )
名前:埴輪 日時:2011/04/17 14:03

すいません。実はVC++は使っていないので、これらのエラーは良くわかりません。 他の方の回答を待ちたいとおもいます。 DXライブラリには一部アセンブラのソースが使用されているようなのでその辺の絡みかも知れません。 まさかとは思いますが、開発環境はx64ですよね? OSが32ビットだったら64ビットものは動きませんよ
Re: 64ビット版対応アプリケーションの開発 ( No.4 )
名前:h2so5 日時:2011/04/17 14:11

ダウンロードページに、 BCCでないとビルドできないと書いてありますよ。
Re: 64ビット版対応アプリケーションの開発 ( No.5 )
名前:きのこ派 日時:2011/04/17 17:09

>埴輪さま 再度返信ありがとうございます。 自分の開発環境はご指摘の通り32ビットなのですが、やはり32ビットでは64ビット向けのものの開発自体が無理なのでしょうか? お恥ずかしい限りですが、そのあたりの基本的なことが分かりません……。 >h2so5さま ダウンロードしたものの中にあった「Borland C++版について」というテキストファイルに 「Borland C++ 版の DxLib.lib をコンパイルするには C++ BuilderX Personal に入っているbcc32.exe か、それ以上のバージョンのコンパイラが必要です。(Borland C++ Compiler 5.5 ではコンパイル出来ません)」という記述があったため、ダウンロードページに書いてあるものもおそらくこれと同じ意味であると思ったのですが……。 「Borland C++に限っては、C++ BuilderX以上のコンパイラが必要」ということではないのでしょうか?
Re: 64ビット版対応アプリケーションの開発 ( No.6 )
名前:埴輪 日時:2011/04/17 22:37

VC++で使うのならばVC++でのコンパイルで問題ないハズです。 x64アプリケーションを実行するにはもちろん64ビット環境が必須となります。 したがって32ビット環境で64ビットものを作成することはまず出来ません。 ハードウェアが対応しているならOSの乗り換えをオススメします。
Re: 64ビット版対応アプリケーションの開発 ( No.7 )
名前:きのこ派 日時:2011/04/17 23:56

埴輪さま 返信ありがとうございます。 64ビット向けにコンパイルさえできるのであれば、 友人等の64ビットのパソコンで動作確認をしようと思っていたのですが……。 コンパイルすら無理なのでしょうか?? それとも64ビット向けにコンパイルしたDXライブラリを使ってコンパイルすることが無理なのでしょうか……。 いずれにせよ、(自分はOSの乗り換えが出来ないため)友人に頼んで64ビットの環境で、 DXライブラリからコンパイルしようと思います。
Re: 64ビット版対応アプリケーションの開発 ( No.8 )
名前:埴輪 日時:2011/04/18 00:02

おそらくですがVCがコンパイルしてくれないのでは。 >コンパイルすら無理なのでしょうか?? それとも64ビット向けにコンパイルしたDXライブラリを使ってコンパイルすることが無理なのでしょうか……。 どちらもx64の機械語を生成する点で同じですね。 今のを消さなくても、仮想マシンと言う手もあります。 そもそもなぜ64ビットでないといけないのでしょうか。
Re: 64ビット版対応アプリケーションの開発 ( No.9 )
名前:きのこ派 日時:2011/04/18 00:57

埴輪さま 早い返信ありがとうございます。 仮想マシンですか……!! そのような手段もありますね!! 検討します。 なぜ64ビットでないといけないのかというお話なのですが、 自分は学生で、今の時期に新入生に向けてパソコンを教える団体に所属しているのですが、 そこで新入生のタイピングの練習にと、タイピングソフトを作成したのです。 それが在校生のパソコンではきちんと動作し、いざ新入生に配布したのですが一部で上手く動かず、 調べたところ、動かないのは全て64ビットのパソコンであることが分かりました。 そのため64ビット向けも作成できないかということになったという次第です。
Re: 64ビット版対応アプリケーションの開発 ( No.10 )
名前:snowkey 日時:2011/04/18 14:12

64ビット環境でも32ビットプログラムは動くような。。。 それよりも、DirectX9のランタイムが入っているかどうかを疑った方が良いかと思います。 64ビットが主流になった頃のOSに始めから入っているのは、DirectX10なので。
Re: 64ビット版対応アプリケーションの開発 ( No.11 )
名前:きのこ派 日時:2011/04/18 18:41

snowkeyさま 返信ありがとうございます。 DirectX10の可能性ですか……調べてみます。
Re: 64ビット版対応アプリケーションの開発 ( No.12 )
名前:埴輪 日時:2011/04/18 23:36

snowkeyさんのおっしゃるとおり、WOW64という機能により、x64環境で32ビットアプリケーションを動作させることができます。 「ファイル名を指定して実行」に「dxdiag」とやってみて、Direct3Dのテストをしてみてください。 ここでDirectX関連のコンポーネントを見ることが出来ます。 あと、差し支えなければですが、動かない環境でのlog.txtをご提示いただければ、何かわかるやも知れません。
Re: 64ビット版対応アプリケーションの開発 ( No.13 )
名前:ガッツ星人 日時:2011/04/22 19:28

紹介された方法で私もVC++2010EEを64ビット化しました。OSはVista64ビットです。 DxLibを使うプログラムをコンパイルすると同じエラーが出ました。そこでDxLibを使わないプログラムをコンパイルしたらはうまくいきました。 おそらくDxLibが32ビットなのでコンパイラが受け付けないのだと思います。
Re: 64ビット版対応アプリケーションの開発 ( No.14 )
名前:きのこ派 日時:2011/04/23 18:22

もう一度配布し直してみたところ、今度は問題なく動きました……不思議です。 回答していただいた皆様ありがとうございました。

Page: 1 |