掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
アプリケーション終了時にOLE32.dllでアクセスバイオレーションが出る (ID:72868)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
・環境 Windows7 64bit VisualStudio2010SP1 ターゲットプラットフォーム:x86 32bit COMを使用するアプリケーションを終了するときに以下の場所でアクセスバイオレーションが出て怒られます。 ソース:delayhlp.cppの380行目 __delayLoadHelper2内の pfnRet = ::GetProcAddress(hmod, dli.dlp.szProcName); と記述してあるところをコールスタックがまず表示します。 VisualStudio2008でビルドしていたときはおきなかった現象なのですが、COMのCoUninitialize周りでリソースの扱いが破綻しているような感じです。その根拠は上のラインで停止させたときにGetProcAddressに渡している変数の以下のような内容からです。 - dli {cb=36 pidd=0x59135a1c ppfn=0x591575e4 ...} DelayLoadInfo cb 36 unsigned long + pidd 0x59135a1c __DELAY_IMPORT_DESCRIPTOR_ole32_dll {grAttrs=1 rvaDLLName=429088 rvaHmod=5561600 ...} const ImgDelayDescr * + ppfn 0x591575e4 __imp__CoUninitialize@0 int (void)* * + szDll 0x58c78c20 "ole32.dll" const char * + dlp {fImportByName=1 szProcName=0x5913627a "CoUninitialize" dwOrdinal=1494442618 } DelayLoadProc + hmodCur 0x75670000 {unused=9460301 } HINSTANCE__ * pfnCur 0x00000000 int (void)* dwLastError 0 unsigned long - dli.dlp {fImportByName=1 szProcName=0x5913627a "CoUninitialize" dwOrdinal=1494442618 } DelayLoadProc fImportByName 1 int + szProcName 0x5913627a "CoUninitialize" const char * dwOrdinal 1494442618 unsigned long - dli.dlp.szProcName 0x5913627a "CoUninitialize" const char * 67 'C' const char ソース全体を見せることができないのが難ではありますが、この手の問題が発生する理由の心当たりだけでもご返答いただけると幸いです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.