|
■No47674 (Azulean さん) に返信
プロジェクトのフォルダを検索対象の範囲として、*.h、*.cppに対して"Common-Controls"を検索しました。
stdafx.h だけでヒットし、内容は以下のとおりでした。
#ifdef _UNICODE #if defined _M_IX86 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") #elif defined _M_IA64 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"") #elif defined _M_X64 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") #else #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") #endif #endif
明示的に #define _UNICODE
は行っていません。プロジェクトの文字セットは「マルチバイト文字セットを使用する」を選択しています。
よって上記部分は実行されないと判断して上記部分全体を削除してビルドしたところ、現象は変わらず、 exeファイル内部のmanifestには アプリケーションのPA:X86 Common-ControlsのPA:X86 で自動生成されます。
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
だけを復活させてビルドしても現象は変わりませんでした。
私は既存の32ビットアプリケーションを64ビットにコンバージョンするのを担当していますのでコードの隅々まで頭に入っていません。 よってプロジェクトのフォルダを検索対象の範囲として、*.h、*.cppに対してキーワード検索を行うことしか思い付きません。その範囲で 調べて、Common-ControlsのPA:X86とする原因を見つけることはできませんでしたが、どこかに残骸=原因があるのでしょう。
エラーチェックをどこまでやるか、きりがないと思いますが ソリューションプラットフォーム:x64 とか DebugCRTのPA:amd64、またはユーザーが書き換えたCommon-ControlsのPA:amd64
とか、あるのに対して、Common-ControlsのPA:X86と判断するのであれば、他の設定と矛盾するので何でCommon-ControlsのPA:X86と 判断するのかシステムメッセージを出力してほしいと思います。
|