Fehler beim Einbinden eines Headers
-
Hallo,
ich versuche in meinem Projekt eine dll dynamisch einzubinden. Dazu muss ich ein header includen. Und hier gibt es ein Problem!
Hier mein Code aus der main:
#include "vcl.h" #include "SDIMain.h" #include "windows.h" #include "dggryph.h" //--------------------------------------------------------------------- #pragma resource "*.dfm" TSDIAppForm *SDIAppForm; //--------------------------------------------------------------------- __fastcall TSDIAppForm::TSDIAppForm(TComponent *AOwner) : TForm(AOwner) { }...........
Es ist wirklich nur eine ganz neue leere SDI Application.
Versuche ich das zu compilieren kommt folgende Fehlermeldung:
[BCC32 Error] dggryph.h(25): E2257 , expected [BCC32 Error] iosfwd(254): E2238 Multiple declaration for 'char_traits<wchar_t>::int_type' [BCC32 Error] iosfwd(136): E2344 Earlier declaration of 'char_traits<wchar_t>::int_type' [BCC32 Error] iosfwd(260): E2238 Multiple declaration for 'char_traits<wchar_t>::assign(wchar_t &,const wchar_t &)' [BCC32 Error] iosfwd(141): E2344 Earlier declaration of 'char_traits<wchar_t>::assign(wchar_t &,const wchar_t &)' [BCC32 Error] iosfwd(265): E2238 Multiple declaration for 'char_traits<wchar_t>::eq(const wchar_t &,const wchar_t &)' [BCC32 Error] iosfwd(146): E2344 Earlier declaration of 'char_traits<wchar_t>::eq(const wchar_t &,const wchar_t &)' [BCC32 Error] iosfwd(270): E2238 Multiple declaration for 'char_traits<wchar_t>::lt(const wchar_t &,const wchar_t &)' [BCC32 Error] iosfwd(151): E2344 Earlier declaration of 'char_traits<wchar_t>::lt(const wchar_t &,const wchar_t &)' [BCC32 Error] iosfwd(276): E2238 Multiple declaration for 'char_traits<wchar_t>::compare(const wchar_t *,const wchar_t *,unsigned int)' [BCC32 Error] iosfwd(156): E2344 Earlier declaration of 'char_traits<wchar_t>::compare(const wchar_t *,const wchar_t *,unsigned int)' [BCC32 Error] iosfwd(283): E2238 Multiple declaration for 'char_traits<wchar_t>::length(const wchar_t *)' [BCC32 Error] iosfwd(167): E2344 Earlier declaration of 'char_traits<wchar_t>::length(const wchar_t *)' [BCC32 Error] iosfwd(290): E2238 Multiple declaration for 'char_traits<wchar_t>::copy(wchar_t *,const wchar_t *,unsigned int)' [BCC32 Error] iosfwd(176): E2344 Earlier declaration of 'char_traits<wchar_t>::copy(wchar_t *,const wchar_t *,unsigned int)' [BCC32 Error] iosfwd(298): E2238 Multiple declaration for 'char_traits<wchar_t>::find(const wchar_t *,unsigned int,const wchar_t &)' [BCC32 Error] iosfwd(187): E2344 Earlier declaration of 'char_traits<wchar_t>::find(const wchar_t *,unsigned int,const wchar_t &)' [BCC32 Error] iosfwd(305): E2238 Multiple declaration for 'char_traits<wchar_t>::move(wchar_t *,const wchar_t *,unsigned int)' [BCC32 Error] iosfwd(197): E2344 Earlier declaration of 'char_traits<wchar_t>::move(wchar_t *,const wchar_t *,unsigned int)' [BCC32 Error] iosfwd(312): E2238 Multiple declaration for 'char_traits<wchar_t>::assign(wchar_t *,unsigned int,wchar_t)' [BCC32 Error] iosfwd(212): E2344 Earlier declaration of 'char_traits<wchar_t>::assign(wchar_t *,unsigned int,wchar_t)' [BCC32 Error] iosfwd(323): E2238 Multiple declaration for 'char_traits<wchar_t>::to_int_type(const wchar_t &)' [BCC32 Error] iosfwd(227): E2344 Earlier declaration of 'char_traits<wchar_t>::to_int_type(const wchar_t &)' [BCC32 Error] iosfwd(334): E2238 Multiple declaration for 'char_traits<wchar_t>::eof()' [BCC32 Error] iosfwd(238): E2344 Earlier declaration of 'char_traits<wchar_t>::eof()' [BCC32 Error] iosfwd(355): E2238 Multiple declaration for 'char_traits<char>::assign(char &,const char &)' [BCC32 Error] iosfwd(141): E2344 Earlier declaration of 'char_traits<char>::assign(char &,const char &)' [BCC32 Error] iosfwd(360): E2238 Multiple declaration for 'char_traits<char>::eq(const char &,const char &)' [BCC32 Error] iosfwd(146): E2344 Earlier declaration of 'char_traits<char>::eq(const char &,const char &)' [BCC32 Error] iosfwd(365): E2238 Multiple declaration for 'char_traits<char>::lt(const char &,const char &)' [BCC32 Error] iosfwd(151): E2344 Earlier declaration of 'char_traits<char>::lt(const char &,const char &)' [BCC32 Error] iosfwd(371): E2238 Multiple declaration for 'char_traits<char>::compare(const char *,const char *,unsigned int)' [BCC32 Error] iosfwd(156): E2344 Earlier declaration of 'char_traits<char>::compare(const char *,const char *,unsigned int)' [BCC32 Error] iosfwd(378): E2238 Multiple declaration for 'char_traits<char>::length(const char *)' [BCC32 Error] iosfwd(167): E2344 Earlier declaration of 'char_traits<char>::length(const char *)' [BCC32 Error] iosfwd(385): E2238 Multiple declaration for 'char_traits<char>::copy(char *,const char *,unsigned int)' [BCC32 Error] iosfwd(176): E2344 Earlier declaration of 'char_traits<char>::copy(char *,const char *,unsigned int)' [BCC32 Error] iosfwd(393): E2238 Multiple declaration for 'char_traits<char>::find(const char *,unsigned int,const char &)' [BCC32 Error] iosfwd(187): E2344 Earlier declaration of 'char_traits<char>::find(const char *,unsigned int,const char &)' [BCC32 Error] iosfwd(400): E2238 Multiple declaration for 'char_traits<char>::move(char *,const char *,unsigned int)' [BCC32 Error] iosfwd(197): E2344 Earlier declaration of 'char_traits<char>::move(char *,const char *,unsigned int)' [BCC32 Error] iosfwd(407): E2238 Multiple declaration for 'char_traits<char>::assign(char *,unsigned int,char)' [BCC32 Error] iosfwd(212): E2344 Earlier declaration of 'char_traits<char>::assign(char *,unsigned int,char)' [BCC32 Error] iosfwd(418): E2238 Multiple declaration for 'char_traits<char>::to_int_type(const char &)' [BCC32 Error] iosfwd(227): E2344 Earlier declaration of 'char_traits<char>::to_int_type(const char &)' [BCC32 Error] iosfwd(429): E2238 Multiple declaration for 'char_traits<char>::eof()' [BCC32 Error] iosfwd(238): E2344 Earlier declaration of 'char_traits<char>::eof()' [BCC32 Error] xutility(345): E2406 Dependent type qualifier 'bool' is not a class or struct type [BCC32 Error] xutility(346): E2406 Dependent type qualifier 'bool' is not a class or struct type [BCC32 Error] xutility(347): E2406 Dependent type qualifier 'bool' is not a class or struct type [BCC32 Error] xutility(347): E2228 Too many error or warning messages
Der Code der ersten Meldung ist folgeder:
#ifndef _DGGRYPH_H #define _DGGRYPH_H /* These lines are intended to contain all the pre-processor definitions needed to make the Gryphon library source code as cross-platform as possible: constructs included to enable cross-platform C library builds, C++ library builds and application program builds; on Unix, Win32 and WinCE platforms... */ #ifdef __UNIX__ #define _stdcall /* MS-specific */ #define DWORD unsigned long #define WINAPI #define LPVOID void* #define TRUE true #define FALSE false #elif defined _WIN32_WCE #else #define INCL_WINSOCK_API_PROTOTYPES 1 #endif #ifdef __UNIX__ typedef unsigned long long dgGryphonTime; #else typedef unsigned _int64 dgGryphonTime; // <--[BCC32 Error] dggryph.h(25): E2257 , expected #endif
Ich habe im Forum schon ueber das Problem gelesen. Meisst hiess es, dass man die windows.h einbinden soll. Bei mir ist das aber der Fall und der Fehler kommt immer noch!
Was kann ich hier machen ?
Thx.
-
Beim BCB heißt das Schlüsselwort __int64 (also mit zwei Unterstrichen).
Du müßtest also die Headerdatei modifizieren (_int64 heißt es bei anderen Compilern, z.B. dem von Microsoft).P.S. Und du solltest die Systemdateien mit <...> einbinden.
Die <windows.h> wird schon von der <vcl.h> eingebunden (daher brauchst du es nicht noch mal zu tun).
Die weiteren Fehler deuten auf falsche Include-Guards hin...
-
Vielen Dank Th,
die __ hat das Problem geloest. Leider leider kommt da schon das naechste. Nun bekomme ich folgenden Fehler:
[BCC32 Error] dggryph.h(573): E2293 ) expected [BCC32 Warning] SDIMAIN.CPP(481): W8057 Parameter 'Sender' is never used [BCC32 Warning] SDIMAIN.CPP(487): W8057 Parameter 'Sender' is never used [BCC32 Warning] SDIMAIN.CPP(493): W8057 Parameter 'Sender' is never used [BCC32 Warning] SDIMAIN.CPP(500): W8057 Parameter 'Sender' is never used
Das ist die dazugehoerige Zeile 573:
bool GetName( dgString* ) const; bool GetName( char* buff, size_t count ) const; bool GetSerial( dgString* ) const; bool GetSerial( char* buff, size_t count ) const; bool GetVersion( dgString* ) const; bool GetVersion( char* buff, size_t count ) const; bool GetTime (time_t*); // [BCC32 Error] dggryph.h(573): E2293 ) expected bool GetTime (dgUint32*, dgUint32*); bool GetTime (dgGryphonTime*); bool SetTime ( time_t ); bool SetTime ( dgUint32, dgUint32 ); bool SetTime ( dgGryphonTime ); bool GetTimestamp (dgUint32*); bool SetTimestamp (dgUint32 );
Wenn ich die Zeile rauskommentiere compiliert es wenigstens. Aber das kann nicht Loesung des Problems sein.
hmm wie bekomme ich das weg?
-
time_t wird in time.h deklariert. Was passiert,wenn Du
#include <ctime>
oder
#include <time.h>vorher angibst?
-
#include <time.h> hat funktioniert!!!!
Vielen Dank fuer die Hilfe!
-
Bleib lieber standardkonform und nimm ctime statt time.h
Du musst dann natürlich auch std::time_t schreiben.
-
Thx.
Wie bekomme ich eigentlich raus in welchem Header welche Variable deklariert ist. Mein Compliler sagt mir ja nichts.....
Oder so Sachen, dass beim Borland __int64 anstatt _int64 verwendet werden muss?Das sind so kleine Formalitaeten die einem dann ein Tag kosten.
-
Hallo,
1. Im BCB6 (englisch)
"Search" --> "Find in Files" .. Variablenname eingeben und abwarten
mfg, Micha
-
Vielen Dank. Unklarheiten sind beantwortet!!!
-
3ugen3 schrieb:
Oder so Sachen, dass beim Borland __int64 anstatt _int64 verwendet werden muss?
Zumindest dafür gibt es mittlerweile einen portablen und standardkonformen Ersatz, nämlich long long.