In general you get two types of situations that give Linker errors: (1) a method was called for from within the script to an external library that your missing; (2) the same method was defined twice.
I'm guess your error is due to a missing library file. WinMerge codebase was written in VS2010 and the author said that it's backwards compatible all the way to 2003. I'd personally recommend VS2010. Just get a trial ISO from Macroshaft.
See this guid on building it:https://fossies.org/windows/misc/WinMer ... iling.html
As a general practice, unless you're an advance programmer that can port the code to a different Visual Studio generation, your best bet is to always compile with the same generation VS as the dev. Macroshaft changes alot of syntax, practices and standards with each release of Visual Studio. They probably have legitimate reasons to do this but I suspect it's more of a way of making old version of VS obsolete so that devs keep buying new licenses from them.
The 32bit version is very straight forward to compile. Wasn't able to compile the 64bit one due to a missing library that caused a linker error. Let me know if you get it to work on your end.