質問

私は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をありがとうございます。張!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top