MFCでは、wWinMain
はappmodul.cpp
で定義されています。このファイルは、私が見ることのできるmfc90ud.dllに組み込まれています。しかし、アプリケーションを実行すると、コールスタックはMyApplication.exe!wWinMain
と表示されます。 にエクスポートされた関数wWinMain
はどのように使用され、アプリケーションに配置されましたか?MFCのwWinMainはどのように実行可能ファイルになりますか?
答えて
ソリューションエクスプローラウィンドウのプロパティ、リンカ、コマンドラインでプロジェクトを右クリックします。 [Additional Options]ボックスに/ verboseと入力します。プロジェクトを再構築します。 [出力]ウィンドウにリンカーがシンボルを検出した場所のトレースが表示されるようになりました。これを見つけるために「WinMain関数」のためにそれを検索:
1> Searching c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\atlmfc\lib\mfcs90ud.lib:
1> Found [email protected]
1> Referenced in msvcrtd.lib(wcrtexew.obj)
1> Loaded mfcs90ud.lib(appmodul.obj)
はmfcs90ud.libは、静的リンクライブラリで、ライブラリ名に注意してください。あなたは「mfcs90ud.lib」を検索した場合、あなたはまた、そのライブラリを参照してしまった方法を見ることができます。
1>Starting pass 1
1>Processed /DEFAULTLIB:mfc90ud.lib
1>Processed /DEFAULTLIB:mfcs90ud.lib
1>Processed /DEFAULTLIB:msvcrtd.lib
etc..
あなたが「マスフローコントローラ」のためのMFCソースコードを検索する場合は、この/ DEFAULTLIBオプションが注入されてしまった方法を見つけることができます。 afx.hから:
#ifdef _DEBUG
#pragma comment(lib, "mfc" _MFC_FILENAME_VER "ud.lib")
#pragma comment(lib, "mfcs" _MFC_FILENAME_VER "ud.lib")
#else
#pragma comment(lib, "mfc" _MFC_FILENAME_VER "u.lib")
#pragma comment(lib, "mfcs" _MFC_FILENAME_VER "u.lib")
#endif
MFCアプリは2つのライブラリをリンクしています。 Mfc90u.libは、MFCのDLLバージョンのインポートライブラリです。 Mfcs90.libは、実行可能ファイルにリンクされるビットを含む静的リンクライブラリです。 WinMain()を含む。
リンカはそれをすべて行います。これは、すべてのオブジェクトファイル、ライブラリファイルを必要とするものと一致します。装飾と一緒に、適切な宣言と定義などを一致させることができます。
魔法はCWinAppののコンストラクタで行われます。
- あなたは(ほとんどが派生型の)この型のグローバル変数を宣言します。
- CWinApp :: CWinAppが呼び出されました(いずれのメインルーチンのより前に)。
- それは後で
AfxGetApp()
によって返されるいくつかのデータ構造を設定します - それはかなり複雑です! wWinMain
が呼び出されます。これは、CWinAppコンストラクタによるデータ構造設定を使用します。wWinMain
から、またはカスタムCWinApp
由来のコンストラクタから
てみデバッグ。
こんにちは、あなたの答えをありがとうが、実際には私の質問に答えることはありませんでした。 –
あなたはappmodul.objを含めることを意味しますか? – Ajay
はい、私はMFCが静的ライブラリと動的ライブラリで構成されていることを認識しませんでした。 –
- 1. java - threadpoolexecutorでハングアップする実行可能ファイルはどうなりますか?
- 2. はどのように別の実行可能な
- 3. ruby実行可能なドキュメントはどこにありますか?
- 4. どのように実行可能ファイルにどのような機能があるのか分かりますか?
- 5. 実行可能ファイルを別の実行可能ファイルにインクルード
- 6. ピップはどのようにパッケージを実行可能にしますか?
- 7. 実行可能なバイナリ形式とエミュレータにはどのようなものがありますか?
- 8. スレッドは実行状態から実行可能状態にどのように移行しますか?
- 9. simv実行可能ファイルにはどのようなオプションがあり、その意味は?
- 10. どのようにPythonスクリプトをグローバルに実行可能にしますか? OSX
- 11. Macでは実行可能ファイルをコンパイルするにはどのようにすればよいですか?
- 12. Windows 7でコマンドプロンプトを使用して実行可能ファイルをどのように実行しますか?
- 13. win32実行可能リソースはどのように処理されますか?
- 14. これをリンゴの実行可能ファイルとしてどのように実行するのですか?
- 15. グローバル変数は実行可能ファイルのサイズにどのように寄与しますか?
- 16. SAFELY Windowsで実行可能な実行可能ファイルへのパス
- 17. 指定されたファイルが見つかりません - vbscriptから実行可能な実行可能ファイル
- 18. 実行可能なjarファイルを別のマシンに実行する
- 19. $ PATHにドッキング可能な実行可能ファイルがありません "react image
- 20. シェルスクリプトで実行可能ファイルを実行するにはどうすればよいですか?
- 21. ストアドプロシージャの実行にどのような環境変数が影響する可能性がありますか?
- 22. JSPページの実行中にどのような問題が発生する可能性がありますか?
- 23. EclipseでGWTプロジェクトを実行可能なJARファイルにエクスポートするにはどうすればよいですか?
- 24. どのようにしてPythonはbashスクリプトを実行可能でなく実行できるのですか?
- 25. ソフトウェアBOTとは、「常に実行可能な実行可能ファイル」とソフトウェアサーバーの違いは何ですか?
- 26. .NET DllまたはExeから実行可能な.NETスタンドアロン実行可能インスタンスにアクセスするにはどうすればよいですか?
- 27. VB.NETアプリケーションの実行可能ファイルを別のパスにコピーするにはどうすればよいですか?
- 28. 実行可能なタスクが実行されるかどうか
- 29. MATLABから実行可能ファイルを実行するには?
- 30. DotNetCoreコンソールアプリケーションは、ソリューション内の実行可能ファイルをどのように参照していますか?
優秀、徹底的な回答ありがとう:) –
質問の理由は、私はMFCの初期起動のいくつかをオーバーライドしたかったということです。私の最初の考えはWinMainに行くことでしたが、今はAfxWinMainを代わりに使うことができます。 –