Подтвердить что ты не робот

"Функция не имеет адреса", несмотря на отключенную оптимизацию (/Od)

Во время отладки в MSVC 2012, я пытаюсь вызвать некоторые функции из окна Watch, чтобы сбрасывать данные в файлы. Тем не менее, я продолжаю получать эту ошибку:

Function Matrix::Save has no address, possibly due to compiler optimizations.   

Класс Matrix находится в моей собственной внешней библиотеке. Быстрая проверка показала, что ни один из методов во внешних библиотеках не имеет адресов и все попытки вызвать их из Watch возвращают эту ошибку, за исключением тех, которые определены в файлах заголовков. Методы в основном проекте имеют адреса независимо от того, где они определены.

Оптимизация отключена во всем решении, конечно. Символы загружаются нормально. Как это исправить?

4b9b3361

Ответ 1

До сих пор я нашел обходное решение при создании внешней библиотеки статически. Со статически связанными библиотеками найдены адреса методов. Диспетчер конфигурации позволяет легко сохранять динамические библиотеки для выпуска.

Ответ 2

В качестве более простого решения вы можете вызвать целевую функцию (Matrix:: Save) как минимум один раз в текущей ветке кода. Затем он будет иметь адрес, потому что он используется.