Bin am verzweifeln: error: 'libintl_snprintf' is not a member of 'std'



  • Hi!

    Ich bin gerade am verzweifeln.

    ich versuche unter Linux (mit g++ und gcc schon probiert) mein Programm zum laufen zu bekommen.

    Ich weis nciht was es ist, aber irgendein include benutzt anscheinend std::snprintf.
    normal sollte das ja mit meinen Includes abgedeckt sien, ich erhalte jedoch beim compilieren folgende Ausgabe:

    g++ -I../IrrMix -D__DEBUG__ -D _DEBUG -ggdb -O   -c -o MySQLPool.o MySQLPool.cpp
    /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/i486-linux-gnu/bits/c++locale.h: In function 'int std::__convert_from_v(char*, int, const char*, _Tv, __locale_struct* const&, int)':
    /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/i486-linux-gnu/bits/c++locale.h:88: error: 'libintl_snprintf' is not a member of 'std'
    

    Beim System handelt es sich um ein debian Linux i686

    meine Includes:

    #include <stdio.h>
    #include <iostream>
    #include <string.h>
    
    #include <assert.h>
    #include <stdlib.h>
    
    #include <RakNetStatistics.h>
    #include <BitStream.h>
    #include <RakNetworkFactory.h>
    #include <RakPeerInterface.h>
    #include <RakNetTypes.h>
    #include <RakSleep.h>
    #include <RakString.h>
    #include <MessageIdentifiers.h>
    #include <mysql++.h>
    
    #include "MySQLPool.h"
    #include "Database.h"
    #include "Chat.h"
    #include "Player.h"
    #include "Network.h"
    
    using namespace std;
    

    Vielleicht weis jemand was ich machen muss, um das Problem zu beheben ?!?



  • Dann schau mal nach, wo das genau herkommt.



  • Tja das Problem ist dass ich eben keine Stelle finde wo die Funktion genutzt wird 😉 incl. Includes



  • dark alex schrieb:

    /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/i486-linux-gnu/bits/c++locale.h:88: error: 'libintl_snprintf' is not a member of 'std'
    

    Laß mich raten: in /usr/include/c++/4.1.2/i486-linux-gnu/bits/c++locale.h, Zeile 88, steht nicht std::libintl_snprintf, sondern std::snprintf?

    Für mich sieht das sehr stark danach aus, daß einer deiner anderen Header sowas wie #define snprintf libintl_snprintf macht. Und sowas macht man natürlich einfach nicht. Je nachdem, wer der Übeltäter ist, könntest du ihm das abgewöhnen, oder als Notlösung evtl. die Reihenfolge der #includes so verändern, daß das #define erst nach diesem Header kommt.



  • dooooomi schrieb:

    dark alex schrieb:

    /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/i486-linux-gnu/bits/c++locale.h:88: error: 'libintl_snprintf' is not a member of 'std'
    

    Laß mich raten: in /usr/include/c++/4.1.2/i486-linux-gnu/bits/c++locale.h, Zeile 88, steht nicht std::libintl_snprintf, sondern std::snprintf?

    Für mich sieht das sehr stark danach aus, daß einer deiner anderen Header sowas wie #define snprintf libintl_snprintf macht. Und sowas macht man natürlich einfach nicht. Je nachdem, wer der Übeltäter ist, könntest du ihm das abgewöhnen, oder als Notlösung evtl. die Reihenfolge der #includes so verändern, daß das #define erst nach diesem Header kommt.

    Annahme Korrekt.

    Der Lösungsansatz ist gut, aber leider nicht gut genug 😉 Ein Suchen nach dem String "libntl_snprintf" hat keine Ergebnisse gezeigt... ich werd's nochmal manuell machen



  • darkalex schrieb:

    Der Lösungsansatz ist gut, aber leider nicht gut genug 😉 Ein Suchen nach dem String "libntl_snprintf" hat keine Ergebnisse gezeigt... ich werd's nochmal manuell machen

    typo.
    vorhin wars noch libintl_sprintf
    und das netz ist voll von "define sprintf libintl_sprintf".
    such nochmal bitte, da ist bestimmt was schiefgegangen.



  • volkard schrieb:

    darkalex schrieb:

    Der Lösungsansatz ist gut, aber leider nicht gut genug 😉 Ein Suchen nach dem String "libntl_snprintf" hat keine Ergebnisse gezeigt... ich werd's nochmal manuell machen

    typo.
    vorhin wars noch libintl_sprintf
    und das netz ist voll von "define sprintf libintl_sprintf".
    such nochmal bitte, da ist bestimmt was schiefgegangen.

    ixh hab mich grad hier im Thread vertippt. In der Suche hab ich von der Konsole kopiert.

    habe nun noch dreimal rekursiv das gesamte Includeverzeichis durchsucht nach "libintl_snprintf" und keinen einzigen Treffer.......

    Die Standardincludes schließe ich aus...



  • dark alex schrieb:

    Die Standardincludes schließe ich aus...

    warum? meinste mit standard den c++-standard? ja, kannste ausschließen.
    meinste mit standard die, die mit <> statt "" inkludiert werden? die würdeich mal in engere betrachtung ziehen.
    ich würde zuerst die ganze platte nach *.h mit "define sprintf libintl_sprintf" durchsuchen.



  • snprintf 😉

    und ich rede (bei den auszuschließenden Headern) von explizit diesen:

    #include <stdio.h>
    #include <iostream>

    #include <string.h>

    #include <assert.h>
    #include <stdlib.h>

    alle anderen sind geprüft worden...



  • Unterstützt deine IDE das Feature, dass man auf einen Bezeichner gehen kann und zu dessen Deklaration weitergeführt wird?

    Und sonst halt mal einige Header ausschliessen, um herauszufinden, woher das kommt.



  • Ok ich hab den header gefunden und den Fehler behoben... Aber ich versteh noch net warum der header compiliert wird, ich habe nirgens ein include dafür gesehen... ist bestimmt wieder im includeten include eines includes includet...

    Trotzdem vielen Dank für eure Hilfe 😉

    @Nexus: Jain... Unter Windows ja^^ unter Linux ists ein einfacher Texteditor 🙂 Unter Windows hab ich aber soweit nicht gedacht^^


Anmelden zum Antworten