kofehler beim kompilieren in einer komischen header datei
-
hi,
ich wollte meinen code kompilieren (ein zlib beispiel code) und bekomm die ganze zeit diesen fehler:
1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\zconf.h(289) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "unistd.h": No such file or directory
soweit ich weiß gibt es die unistd.h nur unter unix systemen
kann mir vielleicht einer helfen?
vielen dank schon mal
p.s.: ich benutze selber windows und visual c++ und die fehlercodestelle in der zconf.h ist:
#if 1 /* HAVE_UNISTD_H -- this line is updated by ./configure */ # include <sys/types.h> /* for off_t */ # include <unistd.h> /* for SEEK_* and off_t */ // FEHLER VOM KOMPILER # ifdef VMS # include <unixio.h> /* for off_t */ # endif # define z_off_t off_t #endif
-
Der Compiler sagt ja, was falsch läuft. Die Datei kann nicht gefunden werden. Da musst du also noch einen Include Pfad angeben, damit er die Datei auch findet.
-
Ja, aber die header datei hat ja nur ein pc mit unix und ich hab windows. Oder gibts die header datei auch für windows?
-
hab grad nochmal geschaut: du hattest recht ich hab da was vergessen zu includieren
-
sry wegen dem spam, aber jetzt krieg ich über 111 fehler die alle nur in der unzip.c und unzip.h sind
hier ein kleiner auszug:
... 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(535) : error C2447: '{': Funktionsheader fehlt - Parameterliste im alten Stil? 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(548) : error C2065: 'ulDosDate': nichtdeklarierter Bezeichner 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(548) : error C2065: 'ptm': nichtdeklarierter Bezeichner 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(549) : error C2182: 'unzlocal_DosDateToTmuDate': Unzulässige Verwendung des Typs 'void' 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(549) : error C2078: Zu viele Initialisierungen 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(549) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'uLong' 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(549) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'ulDosDate' 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(549) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(549) : error C2377: 'uLong': Neudefinition; typedef kann nicht mit einem anderen Symbol überladen werden 1> c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\zconf.h(264): Siehe Deklaration von 'uLong' 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(549) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(551) : error C2447: '{': Funktionsheader fehlt - Parameterliste im alten Stil? 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(575) : error C2146: Syntaxfehler: Fehlendes ')' vor Bezeichner 'file' 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(575) : error C2059: Syntaxfehler: ')' 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(578) : error C2065: 'pfile_info': nichtdeklarierter Bezeichner 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(579) : error C2065: 'pfile_info_internal': nichtdeklarierter Bezeichner 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(580) : error C2065: 'szFileName': nichtdeklarierter Bezeichner 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(580) : error C2065: 'fileNameBufferSize': nichtdeklarierter Bezeichner 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(581) : error C2065: 'extraField': nichtdeklarierter Bezeichner 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(581) : error C2065: 'extraFieldBufferSize': nichtdeklarierter Bezeichner 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(582) : error C2065: 'szComment': nichtdeklarierter Bezeichner 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(582) : error C2065: 'commentBufferSize': nichtdeklarierter Bezeichner 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(583) : error C2374: 'unzlocal_GetCurrentFileInfoInternal': Neudefinition; Mehrfachinitialisierung 1> c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(575): Siehe Deklaration von 'unzlocal_GetCurrentFileInfoInternal' 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(583) : error C2078: Zu viele Initialisierungen 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(583) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'unzFile' 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(583) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'file' 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(583) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(583) : error C2086: 'int unzFile': Neudefinition 1> c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(512): Siehe Deklaration von 'unzFile' 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(583) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(583) : error C2086: 'int file': Neudefinition 1> c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(512): Siehe Deklaration von 'file' 1>c:\program files (x86)\gnuwin32\src\zlib\1.2.3\zlib-1.2.3\contrib\minizip\unzip.c(583) : fatal error C1003: Mehr als 100 Fehler gefunden; Kompilierung wird abgebrochen.
-
Du scheinst die "unzip.c" als C++ zu kompilieren, diese Datei ist aber pures C.
-
achso. Und wie binde och dann die datei in mein c++ so ein, dass keine fehler mehr da sind?
-
Franz++ schrieb:
achso. Und wie binde och dann die datei in mein c++ so ein, dass keine fehler mehr da sind?
- Separat als C kompilieren (-> unzip.o)
- Header (unzip.h) im C++-Code mit "extern C" includieren,
- Rest als C++ kompilieren und
- Object (unzip.o) dem Linker mitgeben.Allerdings solltest Du denselben Compiler verwenden.
Gruß,
Simon2.
-
Franz++ schrieb:
achso. Und wie binde och dann die datei in mein c++ so ein, dass keine fehler mehr da sind?
die unzip.c compilierst du mit einem C-Compiler. Die entsprechende Object-Datei linkst du dann ganz normal mit den Object-Dateien, die dir der C++-Compiler ausspuckt. Damit die Symbole richtig erkannt werden musst du in den C++-Sourcen die unzip.h noch mit
extern "C"
einbinden.
-
ok, danke. jetzt bekomm ich nur noch 46 (neue) fehler^^:
1>c:\cygwin\usr\include\sys\_types.h(15) : error C2144: Syntaxfehler: '__int64' sollte auf ';' folgen 1>c:\cygwin\usr\include\sys\_types.h(15) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. 1>c:\cygwin\usr\include\sys\_types.h(34) : error C4980: "__value": Für die Verwendung dieses Schlüsselworts ist die Befehlszeilenoption /clr:oldSyntax erforderlich. 1>c:\cygwin\usr\include\sys\_types.h(34) : error C2059: Syntaxfehler: '__value' 1>c:\cygwin\usr\include\sys\reent.h(607) : error C2144: Syntaxfehler: 'unsigned __int64' sollte auf ';' folgen 1>c:\cygwin\usr\include\sys\reent.h(607) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. 1>c:\program files\microsoft sdks\windows\v6.0a\include\guiddef.h(161) : error C2660: 'memcmp': Funktion akzeptiert keine 3 Argumente 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdlib.h(380) : error C2143: Syntaxfehler: Es fehlt ')' vor 'Konstante' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdlib.h(380) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Konstante' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdlib.h(380) : error C2059: Syntaxfehler: ')' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdlib.h(381) : error C2143: Syntaxfehler: Es fehlt ')' vor 'Konstante' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdlib.h(381) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Konstante' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdlib.h(381) : error C2059: Syntaxfehler: ')' 1>c:\program files\microsoft sdks\windows\v6.0a\include\propidl.h(1145) : error C2660: 'memset': Funktion akzeptiert keine 3 Argumente 1>c:\program files\microsoft sdks\windows\v6.0a\include\stralign.h(110) : error C3861: "wcscpy": Bezeichner wurde nicht gefunden. 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(217) : error C2143: Syntaxfehler: Es fehlt ')' vor 'Konstante' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(217) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Konstante' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(217) : error C2059: Syntaxfehler: ')' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(220) : error C2143: Syntaxfehler: Es fehlt ')' vor 'Konstante' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(220) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Konstante' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(220) : error C2059: Syntaxfehler: ')' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(221) : error C2143: Syntaxfehler: Es fehlt ')' vor 'Konstante' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(221) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Konstante' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(221) : error C2059: Syntaxfehler: ')' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(222) : error C2143: Syntaxfehler: Es fehlt ')' vor 'Konstante' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(222) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Konstante' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(222) : error C2059: Syntaxfehler: ')' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(223) : error C2143: Syntaxfehler: Es fehlt ')' vor 'Konstante' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(223) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Konstante' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(223) : error C2059: Syntaxfehler: ')' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(224) : error C2143: Syntaxfehler: Es fehlt ')' vor 'Konstante' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(224) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Konstante' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(224) : error C2059: Syntaxfehler: ')' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(225) : error C2143: Syntaxfehler: Es fehlt ')' vor 'Konstante' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(225) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Konstante' 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\float.h(225) : error C2059: Syntaxfehler: ')' 1>c:\program files (x86)\microsoft directx 9.0 sdk (october 2005)\include\d3dx9math.inl(752) : error C2660: 'memcpy': Funktion akzeptiert keine 3 Argumente 1>c:\program files (x86)\microsoft directx 9.0 sdk (october 2005)\include\d3dx9math.inl(758) : error C2660: 'memcpy': Funktion akzeptiert keine 3 Argumente 1>c:\program files (x86)\microsoft directx 9.0 sdk (october 2005)\include\d3dx9math.inl(941) : error C2660: 'memcmp': Funktion akzeptiert keine 3 Argumente 1>c:\program files (x86)\microsoft directx 9.0 sdk (october 2005)\include\d3dx9math.inl(947) : error C2660: 'memcmp': Funktion akzeptiert keine 3 Argumente 1>c:\program files (x86)\microsoft directx 9.0 sdk (october 2005)\include\d3dx9math.inl(1037) : error C2660: 'memcpy': Funktion akzeptiert keine 3 Argumente 1>c:\program files (x86)\microsoft directx 9.0 sdk (october 2005)\include\d3dx9math.inl(1578) : error C2660: 'sqrtf': Funktion akzeptiert keine 1 Argumente 1>c:\program files (x86)\microsoft directx 9.0 sdk (october 2005)\include\d3dx9math.inl(1710) : error C2660: 'sqrtf': Funktion akzeptiert keine 1 Argumente 1>c:\program files (x86)\microsoft directx 9.0 sdk (october 2005)\include\d3dx9math.inl(1855) : error C2660: 'sqrtf': Funktion akzeptiert keine 1 Argumente 1>c:\program files (x86)\microsoft directx 9.0 sdk (october 2005)\include\d3dx9math.inl(2025) : error C2660: 'sqrtf': Funktion akzeptiert keine 1 Argumente 1>c:\cygwin\usr\include\sys\types.h(109) : error C2371: 'time_t': Neudefinition; unterschiedliche Basistypen 1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\crtdefs.h(582): Siehe Deklaration von 'time_t' 1>c:\cygwin\usr\include\sys\types.h(239) : warning C4005: 'FD_SET': Makro-Neudefinition 1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(102): Siehe vorherige Definition von 'FD_SET' 1>c:\cygwin\usr\include\sys\types.h(240) : warning C4005: 'FD_CLR': Makro-Neudefinition 1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(97): Siehe vorherige Definition von 'FD_CLR' 1>c:\cygwin\usr\include\sys\types.h(241) : warning C4005: 'FD_ISSET': Makro-Neudefinition 1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(106): Siehe vorherige Definition von 'FD_ISSET' 1>c:\cygwin\usr\include\sys\types.h(247) : warning C4005: 'FD_ZERO': Makro-Neudefinition 1> c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(104): Siehe vorherige Definition von 'FD_ZERO' 1>c:\cygwin\usr\include\sys\unistd.h(15) : warning C4273: '_environ': Inkonsistente DLL-Bindung. 1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdlib.h(317): Siehe vorherige Definition von '_environ' 1>c:\cygwin\usr\include\sys\unistd.h(17) : error C2733: Zweite C-Bindung für überladene Funktion '_exit' nicht zulässig 1> c:\cygwin\usr\include\sys\unistd.h(17): Siehe Deklaration von '_exit' 1>c:\cygwin\usr\include\sys\unistd.h(145) : error C2733: Zweite C-Bindung für überladene Funktion 'swab' nicht zulässig 1> c:\cygwin\usr\include\sys\unistd.h(145): Siehe Deklaration von 'swab' 1>c:\users\moe\desktop\projekte\c++ test\bla\main.cpp(100) : error C2660: 'memset': Funktion akzeptiert keine 3 Argumente
danke schon mal
-
franz++ schrieb:
ok, danke. jetzt bekomm ich nur noch 46 (neue) fehler^^:
1>c:\cygwin\usr\include\sys\_types.h(15) : error C2144: Syntaxfehler: '__int64' sollte auf ';' folgen
Ich rate mal: du hast vor einen anderen include einen eigenen header #included. Darin hast du eine Klassendefinition stehen, bei der das abschließende Semikolon fehlt.
Merke: immer zuerst die fremden Bibliotheksheader einbinden, dann die eigenen Header. Dann kommen zumindest solche Fehlermeldungen auch im eigenen Code und nicht im fremden.
-
hier meine eingebundenen header dateien:
#include <windows.h> #include <d3d9.h> #include <d3dx9.h> #include <mmsystem.h> extern "C" { #include "unzip.h" #include "unzip.c" } #pragma comment(lib, "d3d9.lib") #pragma comment(lib, "d3dx9.lib") #pragma comment(lib, "winmm.lib")
-
franz++ schrieb:
... #include "unzip.c" ...
Das wird allerhöchstwahrscheinlich nicht wie gewünscht funktionieren.
Nochmal: unzip.c separat (als C) kompilieren und enstehendes Object linken.
Gruß,
Simon2.