混合モードMFCアプリケーションは、VS2008で正しく初期化しません
-
21-08-2019 - |
質問
私はVS2008にVS2005から混合モードMFCアプリケーションを変換しています。それはOKコンパイルされますが、アプリケーションを起動したとき、私はafxCurrentResourceHandle = NULLためAFXWIN1.INLでアサートを取得します。
MyCWinApp :: InitInstance関数が呼び出される前にこのです。コールスタックがある
mfc90d.dll->AfxWinInit (with HINSTANCE = NULL)
myapp.exe!InternalDllMain
myapp.exe!PostDllMain
myapp.exe!dynamic intilizer for postDllMain::A0x61ae6c8e
VS2005で同じプロジェクトは罰金起動し、私の代わりにPostDllMainのWinMainCRTStarupが呼び出されていると呼ばれるbeeingていることがわかり、それが定義されたインスタンスハンドルを取得します:
mfc80d.dll!AfxWinInit (with HINSTANCE = 0x0040000)
mfc80d.dll!AfxWinMain
myApp.exe!WinMain
myApp.exe!__tmainCRTStartup
myapp.exe!WinMainCRTStartup
アプリは/ CLRと管理、管理対象外と混合LIBSとDLLの両方へのリンクを使用してコンパイルされます。
誰もがこの問題にいくつかの光を当てることができますか? VS2005とVS2008の間のこの分野における任意の既知の違いはありますか?
ありがとうございます。
解決
私は、MSDNフォーラム上栄・チュンチャンからの素敵な答えを得ます:
こんにちは、
私は私の側にテストを行い、私は私の側に問題を再現しませんでした。しかし、それはDLLであるようVsiaul Studio 2008でコールスタックが見えますので、私はプロジェクトの設定のProprocessor定義で_USRDLL(/ D「_USRDLL」)を追加してみました、私はあなたが説明したのと同じ主張を得ました。プロジェクトは「_USRDLL」でコンパイルされているかどうかを確認してください。
詳細 http://support.microsoft.com/kb/115088する
私を知ってみましょう。この場合に役立ちます、いない場合は、あなたが私たちのプロジェクトの設定のコマンドラインを表示してくださいだろうか?
おかげで、 栄・チュンチャン
<時間>このマークの上に正しかった!
は、静的libにとして設定されている私の溶液中のプロジェクトの一つは、_USRDLLそのプリプロセッサ定義に定義されていたことが判明します。どういうわけか、これはVS2005で破棄されますが、VS2008は明らかにそれが好きではありません。
あなたにMRをありがとうございます。張!