2010-12-01 5 views
3

Ich überlege zwei Optionen für ein Programm. Entweder C++ mit Boost Asynchronous IO oder Java mit dem asynchronen NIO. Ich weiß, dass Java portabel ist, solange das System die Java-Laufzeit hat. Ich würde lieber C++ mit Boost verwenden, aber ich bin mir nicht sicher, ob das Programm, das ich schreibe, auf einen anderen Windows-Rechner portiert werden kann und trotzdem läuft. Was muss ich tun, damit das Programm zur Laufzeit alle notwendigen Abhängigkeiten hat? Ich plane nur den windows.h, C++ 2003 Standard und die Boost Bibliotheken zu verwenden.Ist ein Boost-Windows-Programm auf andere Windows-Systeme portierbar?

Antwort

3

Solange Sie Boost, die C++ - Standardbibliothek (und die CRT, wenn Sie das Gefühl haben müssen) verwenden, wird Ihr Code ziemlich einfach portieren.

Stellen Sie sicher, dass Sie keine Microsoft CRT-Erweiterungen wie die str*_s Funktionen (z. B. here) vermeiden - MSDN markiert diese nicht sehr gut als nicht standardgemäß, leider.

Vermeiden Sie auch die Verwendung von C++ 0x-Features in Visual C++ v10, um die Portabilität kurzfristig zu maximieren - oder prüfen Sie, ob die anderen Compiler, auf die Sie ausgerichtet sind, über die Funktionen verfügen, die Sie verwenden möchten.

Seien Sie vorsichtig: Wenn Sie eine Menge Dinge aus windows.h verwenden, werden Sie die Portabilität brechen und die Arbeit erhöhen, die Sie tun müssen. Vermeiden Sie dies so weit wie möglich, wenn Sie erwarten, später zu portieren, und wenn Sie etwas von dort benötigen, versuchen Sie, die Verwendung in verschiedenen "Ich muss dies ändern, wenn ich Port" Header und Code-Dateien von Ihnen zu isolieren, so Sie Sie wissen, dass Sie nur die Teilmenge Ihres Codes betrachten müssen, wenn Sie ein anderes Betriebssystem portieren.

+0

Ich denke, er fragt nach dem Ausführen seiner Anwendung auf einem anderen/Windows/Maschine neben seiner Entwicklungsmaschine. –

+0

@Zach - siehe Kommentare zu der anderen Antwort, es ist nicht 100% klar, ob andere Betriebssysteme später ins Visier genommen werden, aber ich wollte das Problem jetzt nur noch ansprechen –

6

Boost und CRT können statisch mit Ihrer ausführbaren Datei verknüpft werden, so dass es überhaupt keine externen Abhängigkeiten gibt.

+0

Oh, also Boost-Bibliotheken sind portabel, dann sollte es funktionieren, um eine ausführbare Datei auf XCode in Mac OS X statisch zu verknüpfen und zu erstellen, sollte unter Windows (solange nicht-portable Bibliotheken vor der Verknüpfung behandelt werden) ... richtig ausgeführt werden ? – Aaron

+4

In Ihrer Frage sprechen Sie über verschiedene Windows-Plattformen, aber jetzt kommentieren Sie zum Erstellen einer ausführbaren Datei in Mac OS, die auf einer Windows-Plattform ausgeführt wird? Meinst du ursprünglich verschiedene Betriebssysteme? Das würde die Antwort etwas ändern, obwohl beide mit einiger Vorsicht eine weitgehend ähnliche Code-Basis verwenden könnten. – Bart

+0

@BKevelham: Ja, Sie haben recht, das ist eine ganz andere Frage. Für jetzt mache ich mir keine Sorgen. Ich werde nur die Windows-VM starten und Visual C++ verwenden. – Aaron

Verwandte Themen