Во время отладки в MSVC 2012 я пытаюсь вызвать некоторые функции из окна Watch, чтобы выгрузить данные в файлы. Тем не менее, я продолжаю получать эту ошибку:
Function Matrix::Save has no address, possibly due to compiler optimizations.
Класс Matrix
находится в моей собственной внешней библиотеке. Быстрая проверка показала, что ни один из методов во внешних библиотеках не имеет адресов, и все попытки вызвать их из Watch возвращают эту ошибку, кроме тех, которые определены в заголовочных файлах. Все методы в основном проекте имеют адреса независимо от того, где они определены.
Разумеется, оптимизация отключена во всем решении. Символы загружаются нормально. Как мне это исправить?
В качестве более простой ситуации вы можете вызвать целевую функцию (Матрица :: Сохранить) хотя бы один раз в текущей ветви кода. Тогда у него будет адрес, потому что он используется.
До сих пор я нашел обходной путь в статическом построении внешней библиотеки. В статически связанных библиотеках адреса методов найдены. Диспетчер конфигурации позволяет легко хранить динамические библиотеки для выпуска.