Most objects aren't allocated "in a DLL", they're allocated within the address space of your program.
If you pull the rug from under a DLL like that surely you'll invalidate any pointers to objects within it, the state of those objects, etc.
As long as you don't change the layout of those object's classes when reloading the code, they'll continue to be valid.
If you pare back all the abstractions, all our game code is, is a bunch of data-structure definitions, and procedures that can transform those data-structures. There's no reason why you shouldn't be able to make your transforms re-loadable (and it's a huge productivity boost if you do so!).
Making run-time changes to your structures is more complicated, and VS "edit and continue" simply doesn't support this. Radikalizm's awesome link seems to serialize objects who's structures have changed, so they can be re-created after re-loading the code. I'm definitely going to have a good look at how that project works!