Przenoszę stosunkowo prosty program konsoli napisany dla systemu Unix na platformę Windows ( Visual C ++ 8.0 ). Wszystkie pliki źródłowe zawierają „unistd.h”, który nie istnieje. Usuwając go, otrzymuję skargi na brakujące prototypy dla „srandom”, „random” i „getopt”. Wiem, że mogę zastąpić losowe funkcje i jestem prawie pewien, że mogę znaleźć / zhakować implementację getopt.
Ale jestem pewien, że inni napotkali to samo wyzwanie. Moje pytanie brzmi: czy istnieje port „unistd.h” do systemu Windows? Co najmniej jeden zawierający te funkcje, które mają natywną implementację systemu Windows - nie potrzebuję potoków ani rozwidlenia.
EDYCJA :
Wiem, że mogę stworzyć własny plik „unistd.h”, który zawiera zamienniki potrzebnych mi rzeczy - szczególnie w tym przypadku, ponieważ jest to ograniczony zestaw. Ale ponieważ wydaje się, że jest to powszechny problem, zastanawiałem się, czy ktoś wykonał już pracę dla większego podzbioru funkcji.
Przełączenie się na inny kompilator lub środowisko nie jest możliwe w pracy - utknąłem z Visual Studio.
ssize_t
? Czy to nie powinno byćsize_t
?ssize_t
powinno byćlong
(tj. 64-bitowe) w niektórych systemach.Spróbuj dołączyć
io.h
plik. Wydaje się, że jest to odpowiednik programu Visual Studiounistd.h
.Mam nadzieję, że to pomoże.
źródło
#define
wszystko, coF_OK
itp., Ale ma wiele typowych rzeczyPolecam używanie mingw / msys jako środowiska programistycznego. Zwłaszcza jeśli przenosisz proste programy konsolowe. Msys implementuje uniksową powłokę w systemie Windows, a mingw jest portem kolekcji kompilatorów GNU (GCC) i innych narzędzi do budowania GNU na platformę Windows. Jest to projekt typu open source, dobrze dostosowany do tego zadania. Obecnie używam go do tworzenia programów narzędziowych i aplikacji konsolowych dla systemu Windows XP i na pewno ma ten
unistd.h
nagłówek, którego szukasz.Procedura instalacji może być trochę skomplikowana, ale stwierdziłem, że najlepszym miejscem do rozpoczęcia jest MSYS .
źródło
Natknąłem się na ten wątek, próbując znaleźć alternatywę dla systemu Windows
getpid()
(zdefiniowaną wunistd.h
). Okazuje się, że włączenieprocess.h
załatwia sprawę. Może to pomoże ludziom, którzy znajdą ten wątek w przyszłości.źródło
Nie, IIRC nie ma funkcji getopt () w systemie Windows.
Boost ma jednak bibliotekę program_options ... która działa dobrze. Na początku może się to wydawać przesadą, ale nie jest straszne, zwłaszcza biorąc pod uwagę, że może obsługiwać ustawianie opcji programu w plikach konfiguracyjnych i zmiennych środowiskowych oprócz opcji wiersza poleceń.
źródło
MinGW 4.x ma unistd.h in
\MinGW\include
,\MinGW\include\sys
i\MinGW\lib\gcc\mingw32\4.6.2\include\ssp
Oto kod wersji MinGW, autorstwa Roba Savoye; zmodyfikowany przez Earnie Boyd, Danny Smith, Ramiro Polla, Gregory McGarry i Keith Marshall:
Ten plik wymaga uwzględnienia
_mingw.h
, co jest następujące:Pozostałe elementy powinny być standardowe dla twojego środowiska.
źródło
Tak, jest: https://github.com/robinrowe/libunistd
Sklonuj repozytorium i dodaj
path\to\libunistd\unistd
doINCLUDE
zmiennej środowiskowej.źródło
Odpowiednikiem
unistd.h
w systemie Windows jestwindows.h
źródło
Utwórz swój własny nagłówek unistd.h i dołącz potrzebne nagłówki dla prototypów funkcji.
źródło