I came across an odd feature in Visual Studio 2012 today.
The symptom is that an executable was unable to find an exported function in one our DLLs. This code functions properly when built in VS 2008.
I finally determined the issue. The calling executable was looking for a virtual destructor for the class, but the class itself did not contain a virtual destructor. There is a mismatch in the name mangling between the dll and the caller.
Clearly the workaround is simple and straight forward. But it will take time to find all of the instances in our code where this manifests.
Is this a new requirement of 2012, or a bug?