ambiguous symbol



  • Hi,

    ich versuche 2 grosse Projekte zu eins zusammen zufuegen und bekomm dabei die Fehlermeldung:

    1>c:\...\ieeecatalog\include\asn1\stdint.h(69) : error C2872: 'int8_t' : ambiguous symbol
    1>        could be 'c:\...\ieeecatalog\include\asn1\stdint.h(59) : char int8_t'
    1>        or 'c:\sdk\eyesweb xmi sdk\include\boost\cstdint.hpp(194) : boost::int8_t'
    

    Das Problem ist also das die Variablen doppelt definiert sind. Wie behebe ich das problem am besten? Gibts da eine generelle Loesung? Google spuckt da leider nicht so viel hilfreiches aus.

    Danke schon mal

    Stefan



  • Hast du irgendwo using namespace boost stehen? Wenn ja, dann nimm das raus.
    Ansonsten musst du den passenden Namespace angeben (:: für global).



  • Hast du dummerweise irgendwo ein "using namespace boost;" stehen? Am besten in nem Header?



  • Erstmal danke fuer eure schnelle Antwort.

    Also ich hab nicht

    using namespace Boost
    

    stehen. Aber ich hab

    using namespace Eyw
    

    stehen was unter umstaenden Boost mit einschliesst. Ich werd das mal nach dem Mittag weiterverfolgen.

    Danke auf jeden fall.

    Stefan



  • MrMoeste schrieb:

    Das Problem ist also das die Variablen doppelt definiert sind.

    Nicht die Variablen, sondern der Typ bzw. typedef. Und der ist deswegen doppelt weil du scheinbar nach der Fehlermeldung zu urteilen mit einem using namespace boost den typ aus boost in den globalen namespace geholt hast und danach den stdint.h included hast, was gleich ein doppelter Fehler war. Denn erstens solltest du unter anderem aus dem Grund keine using direktive vor einem #include benutzen, d.h. auch allgemein nicht in headern. Zweitens hast du die selbe Funktionalität einmal über boost und einmal über stdint.h eingebunden. Du solltest dich entscheiden welchen von beiden du nehmen willst.

    Wie behebe ich das problem am besten? Gibts da eine generelle Loesung? Google spuckt da leider nicht so viel hilfreiches aus.

    Wenn du zwei Prijekte zusammenfügen willst solltest du möglichst zusehen dass die Abhängigkeiten voneinander nicht zu groß werden. Das heißt unter anderem, dass du header, die du innerhalb des einen Projekt brauchst, nicht in die header einbinden solltest, die vom anderen Projekt eingebunden werden.


Anmelden zum Antworten