#visual-studio #qt #cmake
#visual-studio #qt #cmake
Вопрос:
Я работаю над проектом Qt на основе CMake в MS Visual Studio. Когда я пытаюсь оценить любой метод объекта Qt, я получаю сообщение об ошибке:
Function lt;blablablagt; has no address, possibly due to compiler optimizations.
Изображение: Ошибка оценки QuickWatch
Я строю в режиме ОТЛАДКИ; я вижу, что компилятор вызывается без каких-либо оптимизаций:
cl.exe ... /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1
Кроме того, я проверил, загружены ли PDF-файлы:
Изображение: Окно VS Modules с загруженными PDF-файлами
Но ничто из этого не помогает: все объекты оцениваются хорошо, но Qt — нет.
Есть ли что-нибудь, что заставит Visual Studio оценивать свойства объектов Qt?
Комментарии:
1. Вы привели пример этого
QString::isEmpty()
метода. Вы получаете ту же ошибку, если на самом деле используете метод в коде? Компилятор не может оптимизировать его в этом случае, и поэтому вы можете исключить это как источник проблемы.2. В коде все работает довольно хорошо. Если добавить
qDebug() lt;lt; fileName.isEmpty()
, я вижуtrue
илиfalse
в журналах.3. Хорошо, и если вы добавите
qDebug() lt;lt; fileName.isEmpty()
, сможете ли вы затем оценить свойство в Visual Studio?4. Нет. Дело в том, что Visual Studio не оценивает ни один метод Qt. Независимо от его использования в коде.
5. Хорошо, значит, дело не в оптимизации компилятора, а в том, что Visual Studio не может получить доступ к определенным методам. Может ли Visual Studio оценить метод, который вы сами написали в производном классе? Как насчет перезаписанного метода?