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.


Anmelden zum Antworten