I'm learning about the build process so I wanted to propose a reason that your solution might work and see if anyone can point out a flaw in my understanding. Here's my theory:
The existing net.o file contains references to the functions displayed in the error, but those references are now invalid and thus require a new object (.o) file to be created. When the compiler makes a new net.o file, it will contain up-to-date references to the functions it needs.
Ideally, the build process would know (from timestamps on source files) that the net.o file is out of date, but that isn't happening.
The necessity of rebuilding net.o might be a known problem that is "easily enough solved" and so no one is doing anything about (and there might not be any reasonably simple solution anyway). However, "undefined reference to [function name]" errors in any object file might be "easily enough solved" most of the time by simply deleting the .o file so that it gets rebuilt. Do you know if that is the case, and about how often "undefined reference to..." errors in .o files are fixed by rebuilding them?
Thanks for your insight.
A small clarification: not simply rebuild but rebuild with -DMINIUPNP_STATICLIB definition.
By the way if DEFS are changed in Visual Studio then Visual Studio rebuild object files
"undefined reference to..." is the result to two reasons:
1) Not added a library for the linker.
2) Object file is built without necessary definitions
So the error are fixed by rebuilding object files often but not always.