1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

[C++] gcc "different visibilility" warning

Dieses Thema im Forum "OS X-Developer" wurde erstellt von below, 19.08.07.

  1. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Hallo,

    gcc spuckt mir für C++ Code folgende Warnung aus:

    ld: warning ABC_Info::ABC_Info(char*, char*)has different visibility (2) in [blah]/build/Debug/libxxx.a(xxx.o) and (1) in [blah]/build/bcrblib.build/Debug/yyylib.build/Objects-normal/i386/zzzl.o

    ld: warning __ZN12ABC_InfoC2EPcS0_.eh has different visibility (2) in [blah]/build/Debug/libxxx.a(xxx.o) and (1) in [blah]/build/bcrblib.build/Debug/yyylib.build/Objects-normal/i386/zzzl.o

    ld: warning __ZN12ABC_InfoC1EPcS0_.eh has different visibility (2) in [blah]/build/Debug/libxxx.a(xxx.o) and (1) in [blah]/build/bcrblib.build/Debug/yyylib.build/Objects-normal/i386/zzzl.o


    Was wollen mir diese Worte sagen? Ich habe da noch kein "protected" etc gefunden, ich weiss gar nicht, wonach ich suchen soll.

    C++ Profis, Tips?

    Danke
     
  2. patz

    patz Châtaigne du Léman

    Dabei seit:
    15.11.05
    Beiträge:
    822
    Code?

    Sieht aus wie in Konflikt stehende Funktions/Klassendefinitionen.
     
  3. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Ja, so sieht es aus. Was ich Dir an Code anbieten kann ist folgendes:

    Code:
    struct ABC_Info {
    	ABC_Info(		RC_CHAR *pNodeName = ".", 
    									RC_CHAR *pCoreName = "Franz") 
    
    	{
                      // ... Implementation
    	}
    
    };
    Mit Google konnte ich über diese Fehlermeldung nichts finden.

    Alex
     
  4. tjp

    tjp Baldwins roter Pepping

    Dabei seit:
    07.07.04
    Beiträge:
    3.251
    Naja, der Codeschnipsel ist nicht wirklich aussagekräftig. Was fehlt ist die Definition in den jeweiligen Übersetzungseinheiten; ohne ist das mehr oder minder Rätselraten. Wirf mal einen Blick auf die jeweiligen Definitionen class vs. struct, unbenannte Namensräume ... könnten ein Problem sein.
     
  5. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Tut mir auch leid, aber was besseres fiel mir nicht ein. Und das ganze Projekt kann ich unmöglich hier reinstellen.

    Für doofe: Wenn es nicht die Definition oben ist, was ist es dann? Das ist ein Ausschnitt aus einem Header File.

    Wie gesagt, das ist so im Header ... und wird -- zumindest auch auf den zweiten Blick -- jeweils gleich gelesen.
    Auch ein Blick in den Preprocessed Output bringt mich nicht weiter.

    Aber was mich immer noch am meisten wundert: Ich finde diese Warnmeldung nirgends.
    Ein Beispiel, was diese Warning auslöst würde mir vielleicht schon sehr helfen.

    Alex
     
  6. patz

    patz Châtaigne du Léman

    Dabei seit:
    15.11.05
    Beiträge:
    822
    Das ist doch auch Code für die Funktions-Implementation drin? Das hat in einem Header-File definitiv nichts zu suchen und kann schon die Ursache des Problems sein, da die Funktion so evtl. öfter definiert wird.

    Der Code selbst gehört in .cpp- bzw. .c-Dateien, nicht in Header-Files.

    Was machst du eigentlich mit structs, die Funktionen enthalten, in C++-Code? Dafür gibt es doch Klassen?
     
  7. tjp

    tjp Baldwins roter Pepping

    Dabei seit:
    07.07.04
    Beiträge:
    3.251
    Selbstredend ist das nicht sinnvoll. Brich das ganze runter bis Du mit einem Minimalbeispiel das Problem reproduzieren kannst. Meinst klärt sich dann das Problem von selbst.
    Einmal definieren mehrmals deklarieren ist die goldene Regel. Solange es kein Template ist, darf man davon nicht abweichen.
     
  8. below

    below Kalterer Böhmer

    Dabei seit:
    08.10.06
    Beiträge:
    2.865
    Eigentlich wollte ich ganz viel schreiben, (Das z.B. dieser Code sehr, sehr alt und nicht von mir ist) aber ich habe gerade festgestellt, das es vielleicht möglicherweise doch ein gcc Problem ist.

    Sagen wir mal, die Warnings tritt mit dem gcc, den Apple im Moment ausliefert nicht auf -- deshalb hat die Warning bisher auch keiner gesehen.

    Trotzdem werde ich mal ein Miniprojekt machen, aber da frag ich doch mal ein paar gcc Profis, was sich geändert hat.

    Danke für's Nachdenken

    Alex
     

Diese Seite empfehlen