мое приложение поддерживает XP и выше, и я пытаюсь использовать более новые интерфейсы CFileDialog (т.е. GetIFileOpenDialog ()) при работе в Vista и более поздних версиях (с учетом ограничений этих интерфейсов).
Поэтому я проверяю версию ОС и пытаюсь использовать эти интерфейсы, если необходимо, и прибегаю к более старым методам для XP. Проблема в том, что при работе под XP я получаю сбои LoadLibrary (код находится в DLL), так что, похоже, происходит некоторое раннее связывание. Как только я закомментирую код, который использует эти интерфейсы, LoadLibrary завершается успешно.
Можно ли вообще иметь код CFileDialog, используя функции Vista, работающие под XP, даже если код не вызывается?
Спасибо
Вам нужно будет вручную загрузить соответствующую библиотеку с LoadLibrary()
(это не будет загружено во второй раз, но вам нужен хороший дескриптор для этого), а затем используйте GetProcAddress()
узнать адрес функции (GetIFileOpenDialog
). Если вы просто используете функцию Vista напрямую, она не будет загружаться в XP, так как она, как вы говорите, привязывает функцию напрямую.
Других решений пока нет …