none
Windows7 64bit上でVB2010で64ビットアプリを作るにはどういう設定をしたらよいでしょうか。 RRS feed

  • 質問

  • VB2005で作ったアプリ(32bit)をVB2010に変更しましたが、32bitのままです。

    これを64ビットにコンパイルし直すにはどのような設定をしたらよいですか。

    2011年1月9日 10:44

回答

  • ANY CPUというのはその環境にあるCPUによって 32ビットか64ビットかが決まるのでしょうか。

    CPU ではなく、OS によります。
    Windows の 64bit バージョンで実行されているのであれば、64bit で動作します。
    32bit バージョンで実行されているのであれば、32bit で動作します。

    たとえばWindows 7 64 bit でCPUがCore i7であったら、アプリは自動的に64ビットでビルドするのでしょうか。

    「ビルドする」という表現は合いませんが、実行時の OS によって、64bit/32bit が分岐するはずです。

    しかし、予期せぬ動作になりコード変更しなくてはならないようです。

    x64 でビルドして実行したら、きちんと動作しなかったと言うことですか?
    この場合、Any CPU でビルドしても、結局、64bit 環境ではきちんと動作しないはずです。

    回避するには x86 でビルドすることでしょうか。
    x86 でビルドした場合、64bit 環境でも WOW64 という仕組みによって 32bit プロセスとして動作します。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク VB136 2011年1月10日 12:09
    2011年1月9日 11:58
    モデレータ

すべての返信

  • Professional Edition 以上という前提で問題ないでしょうか?

    ビルドメニューから構成マネージャーを選択してください。
    開いたダイアログの右上にアクティブ ソリューション プラットフォームというコンボボックスがありますが、ここに x64 があればそれを選択してください。
    なければ、新規作成を選択し、表示されるダイアログで新しいプラットフォームとして x64 を選択して OK ボタンを押下してください。
    アクティブ ソリューション プラットフォーム が x64 になり、下側のリストにあるプロジェクト一覧のプラットフォームも x64 になれば、切り替えが完了します。

    なお、コードで x86 に依存した処理を書いている場合、この構成を変えてビルドして実行しても正常に動作しない可能性があります。
    ご注意ください。
    (たとえば、IntPtr と書くべきところを Integer と書いていて、サイズが一致しないなど。API を使っている場合は要注意)


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2011年1月9日 11:11
    モデレータ
  • ありがとうございました。しかし、予期せぬ動作になりコード変更しなくてはならないようです。

    ANY CPUというのはその環境にあるCPUによって 32ビットか64ビットかが決まるのでしょうか。

    たとえばWindows 7 64 bit でCPUがCore i7であったら、アプリは自動的に64ビットでビルドするのでしょうか。

    それとも、以前の環境で作ったのがPentium 4の32ビットだったので32ビット設定になっていて

    32ビットアプリになるのでしょうか。

     

     

     

    2011年1月9日 11:23
  • ANY CPUというのはその環境にあるCPUによって 32ビットか64ビットかが決まるのでしょうか。

    CPU ではなく、OS によります。
    Windows の 64bit バージョンで実行されているのであれば、64bit で動作します。
    32bit バージョンで実行されているのであれば、32bit で動作します。

    たとえばWindows 7 64 bit でCPUがCore i7であったら、アプリは自動的に64ビットでビルドするのでしょうか。

    「ビルドする」という表現は合いませんが、実行時の OS によって、64bit/32bit が分岐するはずです。

    しかし、予期せぬ動作になりコード変更しなくてはならないようです。

    x64 でビルドして実行したら、きちんと動作しなかったと言うことですか?
    この場合、Any CPU でビルドしても、結局、64bit 環境ではきちんと動作しないはずです。

    回避するには x86 でビルドすることでしょうか。
    x86 でビルドした場合、64bit 環境でも WOW64 という仕組みによって 32bit プロセスとして動作します。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク VB136 2011年1月10日 12:09
    2011年1月9日 11:58
    モデレータ
  • ANY CPU設定であれば、特に意識しなくても64bit OSならば64 bit動作するんですね。

    であれば、私はあまり意識する必要がなかったかもしれません。

    試した結果はANY CPU以外ではどれも正常動作しませんでした。

    ありがとうございました。

     

    2011年1月10日 12:09