""
[C++] Windowsの空のアプリケーションを作る手順メモ
いつもどうやったっけな?と思って同じ過ちを繰り返してるのでメモ
環境:
Visual Studio 2022
作りたいソリューション
- C++プロジェクト
- ブランクプロジェクト
- Windowsデスクトップアプリケーション(コンソールではない!)
いつもわたし、空のプロジェクトを作りたいからといって
Empty Project
を選んでしまうのです…
すると、コンソールベースの exe を作るソリューションになってしまいます
ちゃうねん、これちゃうねん!
Windowアプリの空のソリューションを作りたい場合はこれ
Create a new project
Windows Desktop Wizard
を選択Configure your new project
で名前を入れて次に進むWindows Desktop Project
でDesktop Application (.exe)
を選択- 更に
Empty project
にチェックを入れる - これで
OK
を押せば、よし!
これこれ、、、これやねん。。。
[Windows] そのexeがx64かx86かを見分ける方法 Part2
先日、こんなブログを書きました
- [Windows] そのexeがx64かx86かを見分ける方法
http://h-sao.com/blog/2020/10/26/how-to-check-x64-or-x86-windows-binary/
このブログを公開したところ、Twitterで @ripjyr さんより
macなら file
コマンドあるよと教えていただいたので追加記事を書いておきます~
上記のブログ記事では、 exe データが 32bit なのか 64bit なのかを調べるやりかたとして
3つのチェック方法を記載しました
今回は4つ目の方法の紹介です~!
パターン4. file コマンドで調べる(macOSの場合)
これは mac のみの環境で、Win exe を調べたいって時のお話です
mac には file
コマンドがあって、それを使うと簡単に Windows exe のビット(PEヘッダ)を調べることができます
$ file 調べたいファイル名
- x86の場合
PE32 executable (GUI) Intel 80386, for MS Windows と表示されます!
|
|
- x64の場合
PE32+ executable (GUI) x86-64, for MS Windows とでます
|
|
真に、素の mac でバイナリデータを見たいときは、これが良いですぅ!!!
謝辞
@ripjyr さん、教えてくださってありがとうございました ^^
[Windows] そのexeがx64かx86かを見分ける方法
手元にあるexeが64bitなのか32bitなのかを知りたい…
開発してるとこういう時がたまにあると思う…
多分ちょっとニッチな需要だけど、検索したらちゃんと誰かが既に調べてくれていました!
パターン1. Windows のメモ帳(notepad.exe)を使って調べる
何にもない環境でも、OS が Windows なら必ず入っているメモ帳”φ(・ェ・o)~メモメモ
これで調べるのが一番簡単な調査方法だと思います~
メモ帳:notepad.exe で調べたい exe ファイルを開く
文字列 PE を検索する
こんな感じ↓↓↓
PE の後ろに空白がちょっとだけあり、その後に続く文字で判別できます
PE L
- 32bit版は
L
が続く
- 32bit版は
PE d
- 64bit版は
d
が続く
- 64bit版は
ふむふむなるほど!
パターン2. バイナリエディタを使って調べる
最近のバイナリエディターのおススメは hexdump for VSCode です
昔は TEXBIN を使ってましたが、VSCode 内で完結するのが良いですね~
- hexdump for VSCode
https://marketplace.visualstudio.com/items?itemName=slevesque.vscode-hexdump
VSCode
を開く調べたい exe をドラッグ&ドロップする
こんなメッセージが出る…(だが気にしない)
1 2
The file is not displayed in the editor becouse it is either binary or users an unsupported eext encoding. Do you want to open it anyway?
右上に出てる
Show Hexdump
をポチッ!
バイナリモードで見て、
0x0100
前後(ファイルによる)の番地あたりに
0x5045 (つまり PE )から始まる文字列があるので探すこんな感じ
50 45 00 00 4c
→つまりPE L
- 32bit版
50 45 00 00 64
→つまりPE d
- 64bit版
ふむふむ、この方法も良い感じです(・ω・)ノ
パターン3. hexdump コマンドで調べる(macOSの場合)
mac しか持ってない環境で VSCode も入ってなくて Windows の exe のビットを調べたい時って一体…!?
とは思いますが(><)
先日、わたし自身が必要だったので、これも調べてしまいました
VSCodeがあればパターン2 の方法で調べられるのですが
mac の標準環境だけで調査したいときは、hexdump が標準で装備されているので
それを使うのも手です(。・_・。)ノ
# [-n バイト数] で先頭からのバイト数の分だけ表示出来る
$hexdump -n 400 バイナリを調べたいファイル名
上記の例だと、x86 のようですね
良い感じです
素の mac でバイナリデータを見たいときは、これが良いかも
パターン4がありました(追記)
パターン4. file コマンドで調べる(macOSの場合)
後日、こちらに追記しました
- [Windows] そのexeがx64かx86かを見分ける方法 Part2
http://h-sao.com/blog/2020/11/07/how-to-check-x64-or-x86-windows-binary-part2/
備考
いくつか他の exe のバイナリデータを見てみました
だいたいファイルの先頭の 0x0080
~ 0x0140
くらいまでに PEヘッダがあるようです
参考
How to check if a binary is 32 or 64 bit on Windows? - superuser (StackExchange) https://superuser.com/questions/358434/how-to-check-if-a-binary-is-32-or-64-bit-on-windows
今回の調査対象にしたツール(x86版とx64版が配布されてる)
動画キャプチャツール「AG-デスクトップレコーダー」
http://t-ishii.la.coocan.jp/download/AGDRec.html