I'm not sure why you would use a smart dimension to equal a global variable. That sounds like bad practice. The whole point of a global variable is to keep it constant and use it in multiple places to have it change all at the same time when it is needed to be changed.
You should flip that around and make the dimension equal the global variable.
I was able to fix this by roughly following the strategy found here https://forum.solidworks.com/thread/97664#thread-message-511585
In summation, run sldworks.exe with the option /regserver through the command prompt. i.e. I would run:
"C:\Program Files\SOLIDWORKS Corp 2015\SOLIDWORKS\sldworks.exe" /regserver
This was possibly followed by a installation repair, I can't remember.