Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"Function has no address" despite disabled optimization (/Od)

During debug in MSVC 2012, I am attempting to call some functions from the Watch window in order to dump data to files. However, I keep getting this error:

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

The class Matrix is located in my own external library. A quick check showed that none of the methods in external libraries have addresses and all attempts to call them from Watch return this error, except for those which are defined in the header files. The methods in the main project all have addresses regardless of where they are defined.

Optimization is disabled throughout the solution, of course. Symbols are loaded normally. How do I fix it?

like image 518
Anton Poznyakovskiy Avatar asked Dec 04 '14 17:12

Anton Poznyakovskiy


2 Answers

So far, I found a workaround in building the external library statically. With statically linked libraries, the addresses of methods are found. Configuration manager allows keeping dynamic libraries for the Release easily.

like image 74
Anton Poznyakovskiy Avatar answered Oct 22 '22 13:10

Anton Poznyakovskiy


As a simpler woraround, you can call target function(Matrix::Save) at least one time in current code branch. Then it will have an address because it is used.

like image 1
Brans Ds Avatar answered Oct 22 '22 13:10

Brans Ds