C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[23]: Windows8(64bit)上でexeが動かない件について


(過去ログ 111 を表示中)

[トピック内 51 記事 (1 - 20 表示)]  << 0 | 1 | 2 >>

■66009 / inTopicNo.1)  Windows8(64bit)上でexeが動かない件について
  
□投稿者/ howling (280回)-(2013/03/28(Thu) 16:59:04)

分類:[.NET 全般] 

度々お世話になっております。

環境はWindows7 Pro SP1 / VS2012 express edition for desktop / C++/CLI & C#です。

リモートデバッグ云々をやっている理由となるエラーがあったのですが、
これの解決方法が結局掴みきれず、困っています。

exeを起動直後に発生し、ブレークポイントも止まりません。
エラー内容は、

アプリケーションを正しく起動できませんでした(0xc000007b)

という物です。

これについて調べてみたところ、おそらく64bit OS上で32bitの何かを使おうとして出ている警告だということがわかりました。
一番それらしく書いてあるのはこちらのサイトです。

http://s.webry.info/sp/maggothand.at.webry.info/201012/article_1.html

で、これをどうにかして回避したいのですが、32bitの何かに触れているソースファイルまでは指定できたものの、
その中の何が32bit関連の何かに触ろうとする物なのかがさっぱりわかりません。
(この指定の方法は、全てのプロジェクトのターゲットCPUをx64に設定しただけです。〜.objでのエラーと出るようになりました)

例えばDirectX9を使用しているのですが、Windows8上ではDirectX11です。
これの互換性はあるようなので、おそらくエラーは起こらないと思うのですが、
Program Files(x86)側を見ているので、変なことになるのかな…とか思ったり。

こういうところ、といったような例などありましたら、教えて頂けませんでしょうか?
宜しくお願い致します。
引用返信 編集キー/
■66010 / inTopicNo.2)  Re[1]: Windows8(64bit)上でexeが動かない件について
□投稿者/ とっちゃん (71回)-(2013/03/28(Thu) 17:43:03)
とっちゃん さんの Web サイト
No66009 (howling さん) に返信

> 環境はWindows7 Pro SP1 / VS2012 express edition for desktop / C++/CLI & C#です。
>
ばっさり削ってますが。。。漠然としすぎていて答えようがありません。
#雑談ならこれで問題ないですけどねw

64bit化しているのですか?どうやって?
>全てのプロジェクトのターゲットCPUをx64に設定しただけです
とありますが。。。かっこの中のこの部分が一番重要かつおそらくこのやり方が間違っているからうまくいっていないのだと思います。

それ以上は今現在書き込まれている情報からは言及できません。

引用返信 編集キー/
■66011 / inTopicNo.3)  Re[2]: Windows8(64bit)上でexeが動かない件について
□投稿者/ pang2 (15回)-(2013/03/28(Thu) 17:47:30)
Process Monitor
http://technet.microsoft.com/ja-jp/sysinternals/bb896645.aspx

で、原因となっているファイルを特定できるかもしれません。
引用返信 編集キー/
■66013 / inTopicNo.4)  Re[2]: Windows8(64bit)上でexeが動かない件について
□投稿者/ howling (281回)-(2013/03/28(Thu) 18:02:17)
No66010 (とっちゃん さん) に返信
ご返信ありがとうございます。

> ばっさり削ってますが。。。漠然としすぎていて答えようがありません。
> #雑談ならこれで問題ないですけどねw

あ、動作させるPCについて何も触れてないですね。編集します。すみません…。

> 64bit化しているのですか?どうやって?
> >全てのプロジェクトのターゲットCPUをx64に設定しただけです
> とありますが。。。かっこの中のこの部分が一番重要かつおそらくこのやり方が間違っているからうまくいっていないのだと思います。

ふーむ…。
手順については次の通りです。

・C#のプロジェクトの場合(「クラスライブラリ」を指定して作成されたプロジェクト。1つあります。)
 [プロジェクトのプロパティ]->[ビルド]->[プラットフォームターゲット]
 を、「Any CPU」から「x64」へ変更

・C++/CLIのプロジェクトの場合(ライブラリ出力するプロジェクト。2つあります。)
 [プロジェクトのプロパティ]->[構成プロパティ]->[ライブラリアン]->[全般]->[対象コンピュータ]
 を、未記入の状態から「MachineX64」へ変更

・C++/CLIのプロジェクトの場合(アプリケーションを出力するプロジェクト。1つあります。)
 [プロジェクトのプロパティ]->[構成プロパティ]->[リンカ]->[詳細設定]->[対象コンピュータ]
 を、未記入の状態から「MachineX64」へ変更

これを行わずにコンパイルし、実行すると
「/MACHINE の指定がありません。X86を既定とします。」という警告が2つ出た後、
アプリケーションを正しく起動できませんでした(0xc000007b)
というエラーが発生します。

これを行った上でコンパイルすると、
「いくつかのcppファイル名.obj」で、
fatal error LNK1112: モジュールのコンピューターの種類 'X86' は対象コンピューターの種類 'x64' と競合しています。
というエラーが発生します。
この「いくつかのcppファイル」内で32bitの何かを触っていると思うのですが、さっぱり…という状態です。

とはいえ、そんなこと言われてもソース無いし、わかるわけないじゃない、と言われればそこまでなのですが…orz
引用返信 編集キー/
■66015 / inTopicNo.5)  Re[3]: Windows8(64bit)上でexeが動かない件について
□投稿者/ とっちゃん (73回)-(2013/03/28(Thu) 18:05:37)
とっちゃん さんの Web サイト
No66013 (howling さん) に返信
> 手順については次の通りです。
>
やり方が全く持って間違っています。
構成マネージャ(わからなければ、後で書いてね)を開いて、プラットフォームを新規に作ってください。



引用返信 編集キー/
■66016 / inTopicNo.6)  Re[3]: Windows8(64bit)上でexeが動かない件について
□投稿者/ howling (282回)-(2013/03/28(Thu) 18:06:45)
No66011 (pang2 さん) に返信
ご返信ありがとうございます。

> Process Monitor
> http://technet.microsoft.com/ja-jp/sysinternals/bb896645.aspx
>
> で、原因となっているファイルを特定できるかもしれません。

うおぉぉぉ…し、調べて使ってみます。まずは差分を取って…ですね。
情報ありがとうございます。
引用返信 編集キー/
■66017 / inTopicNo.7)  Re[4]: Windows8(64bit)上でexeが動かない件について
□投稿者/ howling (283回)-(2013/03/28(Thu) 18:09:51)
No66015 (とっちゃん さん) に返信
> やり方が全く持って間違っています。
> 構成マネージャ(わからなければ、後で書いてね)を開いて、プラットフォームを新規に作ってください。

はっ…確かにそこを変えても、構成マネージャ上でプラットフォームがWin32に指定されていますね…。(C#の物のみAnyCPU)
全てのプロジェクトで作って大丈夫ですか???
引用返信 編集キー/
■66019 / inTopicNo.8)  Re[4]: Windows8(64bit)上でexeが動かない件について
□投稿者/ howling (285回)-(2013/03/28(Thu) 18:20:21)
あーいや、勘違いしているな…。
Win32プラットフォーム上で、ターゲットをx64指定してしまっていたということなんでしょうか…。
確かに新規プラットフォーム作って、そのプラットフォームがターゲットとなっている時に、
指定を変更した方が良いですね…。

でも、そもそもやり方が違うとおっしゃっていますから、そこも違うんでしょうか…うーむ。
引用返信 編集キー/
■66020 / inTopicNo.9)  Re[5]: Windows8(64bit)上でexeが動かない件について
□投稿者/ とっちゃん (74回)-(2013/03/28(Thu) 18:24:26)
とっちゃん さんの Web サイト
No66017 (howling さん) に返信

> はっ…確かにそこを変えても、構成マネージャ上でプラットフォームがWin32に指定されていますね…。(C#の物のみAnyCPU)
> 全てのプロジェクトで作って大丈夫ですか???

すべてのプロジェクトって?
C#とC++/CLIの混在ソリューションですよね?
x64が必要なプロジェクトを対象にx64構成を作るだけですが、C#とC++/CLIでは構成が異なるので
個別に作るほうが安全です。どこに影響があるかわからんです。
VS2010は異なるプラットフォーム設定や構成(Confiuguration)でおかしな動作をすることがあるですよ。





#AnyCPU...独り言だけど、おそらく、EXEの構成をx86にすることが必要なことなんだろうなぁ。。。独り言だけどw
引用返信 編集キー/
■66022 / inTopicNo.10)  Re[5]: Windows8(64bit)上でexeが動かない件について
□投稿者/ とっちゃん (75回)-(2013/03/28(Thu) 18:34:00)
とっちゃん さんの Web サイト
No66019 (howling さん) に返信
> でも、そもそもやり方が違うとおっしゃっていますから、そこも違うんでしょうか…うーむ。

C++/CLI でのx64設定は、リンカーのところだけじゃなくていろんなところに散らばっています。
なので、設定するべき項目が全然足りないです。
一応全部設定すれば、見た目の構成はWin32のまま、ビルドされるものはx64とかもできます。
でも、設定するべき場所を全部知ってる人は構成を新たに作らないで設定するという方法は
絶対に取らないと思います。

引用返信 編集キー/
■66023 / inTopicNo.11)  Re[6]: Windows8(64bit)上でexeが動かない件について
□投稿者/ howling (286回)-(2013/03/28(Thu) 18:36:55)
No66020 (とっちゃん さん) に返信
> すべてのプロジェクトって?

すみません、わからない書き方をしてしまいました。
x64というプラットフォームを作成しました。(コピー元をWin32で)
このx64プラットフォームを、全てのプロジェクトで指定しました。作成はしてないです。

> C#とC++/CLIの混在ソリューションですよね?
> x64が必要なプロジェクトを対象にx64構成を作るだけですが、C#とC++/CLIでは構成が異なるので
> 個別に作るほうが安全です。どこに影響があるかわからんです。

逆に、個別に作るやり方がわからんです…。

> VS2010は異なるプラットフォーム設定や構成(Confiuguration)でおかしな動作をすることがあるですよ。

すみません、今VS2012 expressでやってます。が、それってそもそも間違いですか…?

> #AnyCPU...独り言だけど、おそらく、EXEの構成をx86にすることが必要なことなんだろうなぁ。。。独り言だけどw

x86にするんですか?x64に全部していくものだとばかり思っていたのですが…そもそも間違い???
引用返信 編集キー/
■66024 / inTopicNo.12)  Re[6]: Windows8(64bit)上でexeが動かない件について
□投稿者/ howling (287回)-(2013/03/28(Thu) 18:40:19)
No66022 (とっちゃん さん) に返信
> C++/CLI でのx64設定は、リンカーのところだけじゃなくていろんなところに散らばっています。

散らばって…ち、散らばって…それじゃあうまくいかないのも納得ですね…。
C++/CLIの知識はほとんど無いのに、こういう形にしてしまった私のミスでしょうね…。

> なので、設定するべき項目が全然足りないです。
> 一応全部設定すれば、見た目の構成はWin32のまま、ビルドされるものはx64とかもできます。

わかりました。大変申し訳ありませんが、ご教示して頂けますと幸いです。

> でも、設定するべき場所を全部知ってる人は構成を新たに作らないで設定するという方法は
> 絶対に取らないと思います。

でしょうね…。とりあえずWin32の設定を元に戻しておきます…orz
引用返信 編集キー/
■66025 / inTopicNo.13)  Re[7]: Windows8(64bit)上でexeが動かない件について
□投稿者/ howling (288回)-(2013/03/28(Thu) 18:46:30)
No66023 (howling さん) に返信
>>VS2010は異なるプラットフォーム設定や構成(Confiuguration)でおかしな動作をすることがあるですよ。
>
> すみません、今VS2012 expressでやってます。が、それってそもそも間違いですか…?

これ、誤解を招きそうなので追記させて下さい。
プロジェクト自体は、全てVS2010で作成したままの状態です。
VS2012に互換、とかは何もしていないです。
引用返信 編集キー/
■66028 / inTopicNo.14)  Re[8]: Windows8(64bit)上でexeが動かない件について
□投稿者/ とっちゃん (77回)-(2013/03/28(Thu) 19:03:52)
とっちゃん さんの Web サイト
No66025 (howling さん) に返信
> これ、誤解を招きそうなので追記させて下さい。
> プロジェクト自体は、全てVS2010で作成したままの状態です。
> VS2012に互換、とかは何もしていないです。

えっと、VS2012で作業ではなく、ここからはまずVS2010で作業することを前提とします。
というか、そっちでできないとダメでしょ?

ソリューションエクスプローラで、ソリューション(ツリーのトップ)でコンテキストメニューを出すと
上から5番目くらいのところに構成マネージャがあります。
とりあえずオープン。

C++/CLIのプロジェクトをリストから探して、そこのプラットフォームのコンボを開きます。
たぶん、
Win32
<新規作成...>
<編集...>
の3つがあると思うので、新規作成を選びます。
ダイアログが出たら
新しいプラットフォームに、x64を選びます。設定のコピー元はWin32でOKです。
新しいソリューションプラットフォームを作成するのチェックも付けたままにします。

これで、ひとまずOKをすると、選択したプロジェクトがx64の構成でほかはそのままの新しいソリューションプラットフォームができます。
あとは残りのC++/CLIプロジェクトでも同じように作成していけば完了です。

ただし、2個目からはすでにソリューションがあるので、新しいソリューションプラットフォームを作成するのチェックは外して作業します。

これで、x64用の環境が出来上がります。
あとは、プロジェクトの設定を確認し、細かな設定を変更します。
例えば、出力ファイル名やフォルダなどなど。。。


引用返信 編集キー/
■66031 / inTopicNo.15)  Re[9]: Windows8(64bit)上でexeが動かない件について
□投稿者/ howling (291回)-(2013/03/28(Thu) 19:39:58)
No66028 (とっちゃん さん) に返信
> えっと、VS2012で作業ではなく、ここからはまずVS2010で作業することを前提とします。
> というか、そっちでできないとダメでしょ?

あれれ?Windows8PC上で動作可能にするためには、VS2012とVS2012のリモートデバッガが必要になると思いますが…?

> ソリューションエクスプローラで、ソリューション(ツリーのトップ)でコンテキストメニューを出すと
> 上から5番目くらいのところに構成マネージャがあります。
> とりあえずオープン。

これはOKです。

> C++/CLIのプロジェクトをリストから探して、そこのプラットフォームのコンボを開きます。
> たぶん、
> Win32
> <新規作成...>
> <編集...>
> の3つがあると思うので、新規作成を選びます。
> ダイアログが出たら
> 新しいプラットフォームに、x64を選びます。設定のコピー元はWin32でOKです。
> 新しいソリューションプラットフォームを作成するのチェックも付けたままにします。

これもOKです。

> これで、ひとまずOKをすると、選択したプロジェクトがx64の構成でほかはそのままの新しいソリューションプラットフォームができます。
> あとは残りのC++/CLIプロジェクトでも同じように作成していけば完了です。
>
> ただし、2個目からはすでにソリューションがあるので、新しいソリューションプラットフォームを作成するのチェックは外して作業します。
>
あ、やっぱりそれでいいんですか。それならここまではうまくいってます。

> これで、x64用の環境が出来上がります。
> あとは、プロジェクトの設定を確認し、細かな設定を変更します。
> 例えば、出力ファイル名やフォルダなどなど。。。

なるほど…出力ファイル名そのままでやろうと思ってましたが、そっちの方がいいですね…。
現状どこでも動かないライブラリにしかなっていないので、ぶっちゃけ上書きでもいいんですが…まぁこれは個人の話ですね。すみません。
引用返信 編集キー/
■66033 / inTopicNo.16)  Re[10]: Windows8(64bit)上でexeが動かない件について
□投稿者/ とっちゃん (80回)-(2013/03/28(Thu) 19:57:40)
とっちゃん さんの Web サイト
No66031 (howling さん) に返信
> ■No66028 (とっちゃん さん) に返信
>>えっと、VS2012で作業ではなく、ここからはまずVS2010で作業することを前提とします。
>>というか、そっちでできないとダメでしょ?
>
> あれれ?Windows8PC上で動作可能にするためには、VS2012とVS2012のリモートデバッガが必要になると思いますが…?
>
は?それは、リモートデバッグの話ですよね?
x64アプリはVS2010でも作れますよ?実行にVS2012が必要な要素なんて1ビットもありませんよ?

x64アプリの実行に必要なのは、 x64版の OS であって、VSではありません。
OSも、べつに、バージョンが6.2じゃないとダメなわけではなく、6.0でも、6.1でもいいんですよ?

もちろん、Win8 で動くアプリ(ストアアプリを除く)のビルドにVS2012が必要なわけでもありません。
VS2010や、2008あるいは、2005どころか、VC6でビルドしても、動くように作ってありさえすれば、Win8で動作させることはできます。


かなりぐちゃぐちゃになってる気がします。
落ち着いて、状況整理してみることをお勧めします。

引用返信 編集キー/
■66034 / inTopicNo.17)  Re[11]: Windows8(64bit)上でexeが動かない件について
□投稿者/ howling (292回)-(2013/03/28(Thu) 20:05:43)
No66033 (とっちゃん さん) に返信
> は?それは、リモートデバッグの話ですよね?
> x64アプリはVS2010でも作れますよ?実行にVS2012が必要な要素なんて1ビットもありませんよ?

そうですそうです。
でも、x64アプリが作れてもエラーが別の物に変わるだけ、なんていうのはよくある話だと思います。
それを考慮すると、リモートデバッグ可能な状態にしておく、というのが正しい形なのかな?と思うのですが、
そもそもそこから間違っていますか?

> x64アプリの実行に必要なのは、 x64版の OS であって、VSではありません。
> OSも、べつに、バージョンが6.2じゃないとダメなわけではなく、6.0でも、6.1でもいいんですよ?
>
> もちろん、Win8 で動くアプリ(ストアアプリを除く)のビルドにVS2012が必要なわけでもありません。
> VS2010や、2008あるいは、2005どころか、VC6でビルドしても、動くように作ってありさえすれば、Win8で動作させることはできます。

32bitの何かに触れないと動作しないような書き方をどこかでしているから起こっているエラーと認識しています。
ですから、動作自体に特定のVSのバージョンが必要、という認識は無いです。
ただ、リモートデバッグを使用してWindows8PC上で動作することを確認したいと思っています。
純粋にこのエラー「だけ」を直せば済むのなら良いのですが…。

> かなりぐちゃぐちゃになってる気がします。
> 落ち着いて、状況整理してみることをお勧めします。

すみません、もしまたおかしな事言ってたらご指摘ください。
引用返信 編集キー/
■66036 / inTopicNo.18)  Re[12]: Windows8(64bit)上でexeが動かない件について
□投稿者/ とっちゃん (81回)-(2013/03/28(Thu) 20:38:19)
とっちゃん さんの Web サイト
No66034 (howling さん) に返信
> ■No66033 (とっちゃん さん) に返信
>>は?それは、リモートデバッグの話ですよね?
>>x64アプリはVS2010でも作れますよ?実行にVS2012が必要な要素なんて1ビットもありませんよ?
>
> そうですそうです。
> でも、x64アプリが作れてもエラーが別の物に変わるだけ、なんていうのはよくある話だと思います。
> それを考慮すると、リモートデバッグ可能な状態にしておく、というのが正しい形なのかな?と思うのですが、
> そもそもそこから間違っていますか?
>
間違ってはいません。が、問題を見誤っています。

今問題となっているエラーの原因は、Windows8 にあるわけではなくて、x64版のバイナリが正しくできていないことですよね?

Windows8 は全く無関係です。Windows7 のx64版でも同じ問題が発生しているはずです。

もし、x64なOSがWin8しかなくて、Win7は全部x86だ。。。ということであれば仕方ないですが。。。
その場合は、そのWin8に直接VS入れちゃうほうがデバッグしやすいと思うんですけどねぇ。。。
それなら、VS2010でそのままデバッグできるし。。。


> 32bitの何かに触れないと動作しないような書き方をどこかでしているから起こっているエラーと認識しています。
もし、これが「真」であるとしたら、64bitなバイナリを作らないといけないという部分が間違っていることになります。

今やってることそのものがかなり徒労に終わる可能性が高いです。。。が、それは本当にそうなのか?を切り分けられるまでわかりません。


> ですから、動作自体に特定のVSのバージョンが必要、という認識は無いです。
> ただ、リモートデバッグを使用してWindows8PC上で動作することを確認したいと思っています。
> 純粋にこのエラー「だけ」を直せば済むのなら良いのですが…。
>
一応書いておきますね。

起動できない状態は、VSではデバッグできません。リモートも何もなく。。です。
VSでデバッグできるのは、カーネルがプロセス空間を用意し、メインスレッドを作成し、それの実行ポイントをEXEのスタートアップに設定してからです。
そこに至るまでの部分のデバッグはできません。

リモートデバッガを使っても同様です。
そこの部分をデバッグしたいのであれば、ICEなどのカーネルモードデバッガを使う必要があります。
#リング0で動く必要はないと思いますけどねw


>>かなりぐちゃぐちゃになってる気がします。
>>落ち着いて、状況整理してみることをお勧めします。
>
> すみません、もしまたおかしな事言ってたらご指摘ください。

おかしなことを言ってるわけではないんですよ。
問題の切り分けをするポイントそのものが間違ってるんです。

x64なバイナリを作るが目的なら間違った方向に進んでないですが、
もし、32bitなコードが必須なら、EXEをAnyCPU(たぶんそうなってますよね)から、x86にすることが必要な修正になります。

もしそうなら、問題の切り分けが全く違ってるとなりますよね?
なので、そのあたりも含めて状況整理してみる必要があると思います。


引用返信 編集キー/
■66037 / inTopicNo.19)  Re[13]: Windows8(64bit)上でexeが動かない件について
□投稿者/ howling (294回)-(2013/03/28(Thu) 20:50:23)
No66036 (とっちゃん さん) に返信

長い間お付き合いさせてしまって申し訳ありません。
ご返信ありがとうございます。

> 間違ってはいません。が、問題を見誤っています。
>
> 今問題となっているエラーの原因は、Windows8 にあるわけではなくて、x64版のバイナリが正しくできていないことですよね?

はい、その通りです。

> Windows8 は全く無関係です。Windows7 のx64版でも同じ問題が発生しているはずです。

ちょうどついさっき、これもリモートデバッグで試してみました。そして、その通り問題が起こりました。

>>32bitの何かに触れないと動作しないような書き方をどこかでしているから起こっているエラーと認識しています。
> もし、これが「真」であるとしたら、64bitなバイナリを作らないといけないという部分が間違っていることになります。
>
> 今やってることそのものがかなり徒労に終わる可能性が高いです。。。が、それは本当にそうなのか?を切り分けられるまでわかりません。

うーん、おそらく認識がおかしいのはそこですね。
質問する形になってしまうのですが、
64bitOSでターゲットがx86であるexeを起動することは可能なのでしょうか?
いわゆるXPモードのような、32bitで動く何かに勝手に切り替わってくれるのでしょうか?
↑ここらへん、全くまだ調べていない状態で聞いています。申し訳ありません。

> 起動できない状態は、VSではデバッグできません。リモートも何もなく。。です。
> VSでデバッグできるのは、カーネルがプロセス空間を用意し、メインスレッドを作成し、それの実行ポイントをEXEのスタートアップに設定してからです。
> そこに至るまでの部分のデバッグはできません。
>
> リモートデバッガを使っても同様です。
> そこの部分をデバッグしたいのであれば、ICEなどのカーネルモードデバッガを使う必要があります。
> #リング0で動く必要はないと思いますけどねw

ほわぁ…カーネルモードデバッガなるものが存在しているんですね。
全く触れたこともないので、さっぱり知らないことばかりなのですが、勉強になります…。
リング0とかの用語も理解してないので、ちょっと調べてみますね。

> おかしなことを言ってるわけではないんですよ。
> 問題の切り分けをするポイントそのものが間違ってるんです。
>
> x64なバイナリを作るが目的なら間違った方向に進んでないですが、
> もし、32bitなコードが必須なら、EXEをAnyCPU(たぶんそうなってますよね)から、x86にすることが必要な修正になります。
>
> もしそうなら、問題の切り分けが全く違ってるとなりますよね?
> なので、そのあたりも含めて状況整理してみる必要があると思います。

おそらく…「ターゲットをx86で作ったexeは64bitOS上で起動しない」というのが誤認識ですか?
てっきりそうだと思っていたので、x86依存の部分を修正するしか方法はない!と視野を狭めていた感じがします。
いかがでしょう???

引用返信 編集キー/
■66040 / inTopicNo.20)  Re[14]: Windows8(64bit)上でexeが動かない件について
 
□投稿者/ とっちゃん (83回)-(2013/03/28(Thu) 21:36:49)
とっちゃん さんの Web サイト
No66037 (howling さん) に返信
> 長い間お付き合いさせてしまって申し訳ありません。
> ご返信ありがとうございます。
>
あ、忙しければ反応しないだけなので気にしなくていいですよ。
自分のペースで参加してください。


> 質問する形になってしまうのですが、
> 64bitOSでターゲットがx86であるexeを起動することは可能なのでしょうか?
> いわゆるXPモードのような、32bitで動く何かに勝手に切り替わってくれるのでしょうか?
> ↑ここらへん、全くまだ調べていない状態で聞いています。申し訳ありません。
>
原因ここか!

動きます。というか。。。世の中のx64で動いてるアプリのいくばくかは
いろいろな理由で64bit化することが不可能なので(うちのソフトも不可能な理由があって32bitのまま)
そういうのは普通に32ビットアプリとして動作してます。

そもそもVS自身も32ビットアプリですしw


> ほわぁ…カーネルモードデバッガなるものが存在しているんですね。
> 全く触れたこともないので、さっぱり知らないことばかりなのですが、勉強になります…。
> リング0とかの用語も理解してないので、ちょっと調べてみますね。
>
ま、これについては、そういうのがあるんだーで十分です。
カーネルモードドライバの開発に関与しない限りは関係ない世界です。


> おそらく…「ターゲットをx86で作ったexeは64bitOS上で起動しない」というのが誤認識ですか?
> てっきりそうだと思っていたので、x86依存の部分を修正するしか方法はない!と視野を狭めていた感じがします。
> いかがでしょう???
>
思いっきりご認識です。x86 で作ったEXEが動かないのは、x86系CPUではない環境です。
現行OSだと、ARM上で動作する Windows RTだけですね。

ということで、とりあえず今のプロジェクトを元に戻して、x86なまま動かしてみてください。
x86なEXEでx86なまま、まずは動かしてみましょう。

もし、64bitOSだと途中でクラッシュするとか、起動しようとしてエラーが発生するとかがあったら
その時に、改めてリモートデバッグすればいいと思います。

ちなみに、対象がWin7なら相手がx64でもVS2010でリモートデバッグできます。

引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 | 2 >>

管理者用

- Child Tree -