2016-08-09 29 views
1

Hintergrund: Ich arbeite an der Portierung eines großen Projekts, das in C++ ausschließlich für Unix-Systeme entwickelt wurde, um mit Windows kompatibel zu sein, um eine eventuelle Windows-Verteilung zu ermöglichen. Ich habe nicht viel Erfahrung in der Windows-Entwicklung, aber ich würde gerne alles bekommen, was ich tun kann, richtig gemacht, bevor Senior-Entwickler einziehen und übernehmen.Kann MinGW die meisten Unix-Systemanrufe ohne Aufwand replizieren?

Frage: Also habe ich für eine Weile nach Windows-Versionen für alle Unix/Posix-Aufrufe gesucht, die in der Software verwendet werden, die meisten kommen aus dirent.h, unistd.h und einige unter sys, wie sys/stat.h oder sys/types.h. Und obwohl es sehr viel Arbeit kosten wird, die Programme zu ändern, um die neuen Win32-API-Aufrufkonventionen und Rückgabetypen (und manchmal auch alle neuen Funktionen) zu übernehmen, wird es wahrscheinlich irgendwann funktionieren.

Aber ich habe gesehen, dass dies häufig kommt, die Tatsache, dass MinGW, denke ich, enthält viele native Unix-Aufrufe und Funktionen als Teil der GCC-Umgebung, und können sie in Windows-kompatible Anrufe übersetzen, so dass Sie kompilieren können unter Windows, und verwenden Sie das kompilierte Programm unter Windows einfach. In der Tat, eine der ähnlichen Fragen, die ich in der Seitenleiste gelesen habe, spricht gerade darüber. Was ich nicht verstehe und Probleme zu verstehen habe, ist genau das Ausmaß dieser eingebauten Übersetzungsfunktionalität, und wo ich eine Liste von System-Sachen finden kann, die damit arbeiten.

Entschuldigung, dieser Beitrag ist etwas unstrukturiert und ich bin so grün damit, aber ich habe nur 2 Wochen Zeit, um etwas damit zu erreichen, bevor ich mit einem leitenden Entwickler ausgetauscht werde.

+0

Ich glaube nicht, dass Sie sich auf das neue Windows 10 Linux-Subsystem verlassen können? :-) –

+0

Da der Markt dafür normalerweise Forschungslabors ist, würde ich es als Glück betrachten, wenn sie alle Windows 7 sogar hätten. – codechao

Antwort

4

Nein. MinGW versucht nicht, UNIX-Funktionen unter Windows zu implementieren. Es kann die meisten Systemaufrufe nicht ohne Aufwand replizieren.

Allerdings tut Cygwin das tun.

+0

Beachten Sie jedoch, dass Cygwin eine Bandaid-Sticky-Tape-Lösung ist. Es funktioniert die meiste Zeit, aber es ist nicht elegant. (Es ist auch nicht kompatibel mit einer [beunruhigend lange Liste von Anwendungen von Drittanbietern] (https://www.cygwin.com/faq.html#faq.using.bloda).) –

+0

@HarryJohnston Das ist, weil es keinen eleganten Weg gibt um Unix unter Win32 zu replizieren. (WSL ist nicht unter Win32) – immibis

+0

Ja, aber es scheint, dass das OP die Möglichkeit haben könnte, den Code tatsächlich zu portieren. Ich wollte nur sicherstellen, dass sie sich der Nachteile der scheinbar einfacheren Lösung bewusst waren. –