Mismatch detected for '_MSC_VER' libs and why isn't _ALLOW_MSC_VER_MISMATCH working?

Hi there!

We are linking our UE4 build with a pretty massive external .lib that we build in-house.
This now results in a _MSC_VER error because the .lib is built in the ancient VS2010 and UE is being built in VS2017.

Obviously we could convert the code for the libs from 2010 to 2017 but it’s a insane amount of work and we would definitely rather just ignore the problem as the linked lib is only used by the editor.
I looked around on and there is a preprocessor “_ALLOW_MSC_VER_MISMATCH” that should do just that but I still get the error.

_ALLOW_MSC_VER_MISMATCH has been added in the modulerules like this:


PublicDefinitions.Add("_ALLOW_MSC_VER_MISMATCH");

Is this not the correct way to do this?
Has someone else have experience with linking out of date libs?
Is our only solution to go through the pain of upgrading the libs?

Thanks for your time!

It’s a preprocessor definition so adding it to module rules will make it well not a preprocessor defintion.
Adding it to the commandline should make it work but there is still no guarantee that it will work. I would
even say that it’s unlikely to work.

We actually solved this the difficult way by recompiling every .lib.
I could not find a better way around it.