Our company will purchase a large and very complex piece of source code for satellite communications. It is coded in C++ and we will code additions to it, also in C++, linking our code with the purchased code into a single executable unit.
Sounds good!
Is it necessary that we use the same compiler and same compiler version as was used to develop the purchased code?
Speaking generally, no it is not necessary. The purpose of C++ is to act as an abstraction over these kinds of things, so a well-written C++ program will compile just as well on your toolchain as it did on the original author's, and the resulting program will have the same result. The performance may vary, because different compilers are good at different things, but the fundamental behaviour of the program should not change.
However, badly-written software may rely on implementation-specific behaviour, or even undefined behaviour. It may make assumptions about the built-in types, or about the platform's endianness. Even well-written software may have no choice but to rely on non-standard extensions that aren't available on your chosen toolchain, or it may do so because there was simply no need to spend time on adding a portability layer within the duration of the original project.
Ultimately, you will need to ask the author/vendor what the source code is written for. If they claim that it is specifically written against, say, Visual Studio 2015, and requires Windows API features, you should probably stick with that. But if they claim that it is portable, standard C++, then use whatever compiler you like. Make sure your purchase agreement includes a support arrangement so that you can get free help when it turns out the vendor was lying.
Is it necessary that we use the same version of C++ as the purchased code? If it is not using 2014, we might want to use some features of it, but not if there might be some problems with mixing different versions.
Probably. Maybe.
C++03 is forward-compatible for the most part so, if the code is C++03, then you're unlikely to have a problem. (Though some tweaks may be required.)
But features introduced in C++11 and C++14 are not backward-compatible so if the vendor used, say, C++11 lambdas, and you try to build their code in a C++03 compiler, that just won't work.
In theory, of course, it ought not to matter, especially the language version, but it is conceivable that different versions of the compiler will generate different object code, potentially leading to timing differences, etc.
Absolutely. If the code relies so much on a specific implementation in order to obtain expected results, then it is up to the vendor to be responsible and inform you of that. Since we live in the real world, I recommend being diligent and asking them first.
And I'll echo what others have said: ensure that you have some sort of support recourse, so that if they misrepresented any of the responses to these questions (whether intentionally or otherwise) you do not end up shouldering the resulting cost.