As you asked for guesses, without giving much useful information, my guess is that you have IPO (link time optimizable) objects which aren't compatible with the linker you are using. If you made IPO objects with you current ICL, you must use ICL to drive the link, so that xilink is invoked automatically. I would expect such an error if you asked CL or Microsoft link to process these objects directly. You may also get such an error with IPO objects when the compiler installation which made the objects is a different major version from the one you are using for link. The link time optimizable files from ICL (IPO) and CL (/GL) aren't compatible, in addition to the incompatibilities between major versions of either compiler. If you want to mix compiler and linker versions where the IPO formats aren't compatible, you must turn off the IPO or GL option. There are both project properties in VS and command line options for that.