Мой VC ++ 6.0 не определяет IFileDialog, ни в базовом пакете, ни в Windows SDK. Ты откуда-то портировал его обратно?
Я бы посмотрел определение IFileDialog в VC ++ 10. Я предполагаю, что оно определено с помощью некоторого макроса, и этот макрос включает или исключает _declspec(uuid('...'))
в зависимости от некоторой постоянной времени компиляции, которая установлена неправильно.
Редактировать: В VC ++ 10 IFileDialog определяется с помощью макроса MIDL_INTERFACE, в ShObjIdl.h. Макрос MIDL_INTERFACE определен в 3 разных файлах, поэтому сложно определить, какое определение вы выбираете; они все разные. Однако я не вижу способа, чтобы определение не было связано с GUID.
Возможно ли, что вы самостоятельно делаете предварительное определение IFileDialog, которое не содержит GUID?