Unser Unternehmen wird einen großen und sehr komplexen Quellcode für die Satellitenkommunikation erwerben. Es ist in C ++ codiert, und wir werden Ergänzungen dazu codieren, auch in C ++, und unseren Code mit dem gekauften Code in einer einzigen ausführbaren Einheit verknüpfen.
Hört sich gut an!
Ist es notwendig, dass wir denselben Compiler und dieselbe Compilerversion verwenden, mit denen der gekaufte Code entwickelt wurde?
Generell gesagt, nein, es ist nicht notwendig. Der Zweck von C ++ ist es, diese Art von Dingen zu abstrahieren, sodass ein gut geschriebenes C ++ - Programm auf Ihrer Toolchain genauso gut kompiliert wird wie auf der des ursprünglichen Autors, und das resultierende Programm wird dasselbe Ergebnis haben. Die Leistung kann variieren, weil verschiedene Compiler in verschiedenen Dingen gut sind, aber das grundlegende Verhalten des Programms sollte sich nicht ändern.
Schlecht geschriebene Software kann sich jedoch auf implementierungsspezifisches oder sogar undefiniertes Verhalten stützen. Es kann Annahmen über die eingebauten Typen oder über die Endianität der Plattform treffen. Sogar gut geschriebene Software hat möglicherweise keine andere Wahl, als sich auf nicht standardmäßige Erweiterungen zu verlassen, die für die von Ihnen ausgewählte Toolchain nicht verfügbar sind, oder es war einfach nicht erforderlich, Zeit für das Hinzufügen einer Portabilitätsschicht innerhalb von zu investieren das ursprüngliche Projekt.
Letztendlich müssen Sie den Autor / Anbieter fragen, wofür der Quellcode geschrieben wurde. Wenn sie behaupten, dass es speziell für Visual Studio 2015 geschrieben wurde und Windows-API-Funktionen erfordert, sollten Sie sich wahrscheinlich daran halten. Wenn sie jedoch behaupten, dass es portabel ist, verwenden Sie einen beliebigen Compiler. Stellen Sie sicher, dass Ihr Kaufvertrag eine Support-Vereinbarung enthält, damit Sie kostenlose Hilfe erhalten, wenn sich herausstellt, dass der Verkäufer lügt.
Ist es notwendig, dass wir dieselbe Version von C ++ wie den gekauften Code verwenden? Wenn 2014 nicht verwendet wird, möchten wir möglicherweise einige Funktionen verwenden, aber nicht, wenn beim Mischen verschiedener Versionen Probleme auftreten können.
Wahrscheinlich. Könnte sein.
C ++ 03 ist zum größten Teil vorwärtskompatibel. Wenn der Code C ++ 03 ist, ist es unwahrscheinlich, dass Sie ein Problem haben. (Obwohl einige Optimierungen erforderlich sein können.)
In C ++ 11 und C ++ 14 eingeführte Funktionen sind jedoch nicht abwärtskompatibel. Wenn also der Hersteller beispielsweise C ++ 11-Lambdas verwendet und Sie versuchen, ihren Code in einem C ++ 03-Compiler zu erstellen, der gerade gewonnen hat funktioniert nicht.
Theoretisch sollte es natürlich keine Rolle spielen, insbesondere die Sprachversion, aber es ist denkbar, dass verschiedene Versionen des Compilers unterschiedlichen Objektcode generieren, was möglicherweise zu Zeitunterschieden usw. führt.
Absolut. Wenn der Code so stark von einer bestimmten Implementierung abhängt, um die erwarteten Ergebnisse zu erzielen, ist es Sache des Anbieters, dafür verantwortlich zu sein und Sie darüber zu informieren. Da wir in der realen Welt leben, empfehle ich fleißig zu sein und sie zuerst zu fragen.
Und ich werde wiederholen, was andere gesagt haben: Stellen Sie sicher, dass Sie eine Art Rückgriff auf Unterstützung haben, damit Sie die daraus resultierenden Kosten nicht tragen, wenn sie eine der Antworten auf diese Fragen (absichtlich oder auf andere Weise) falsch darstellen.