2010-08-10 14 views
10

Ich versuche Botan auf Windows mit MinGW zu kompilieren, und erhalte den folgenden Fehler beim Kompilieren:swprintf und vswprintf nicht deklariert?

c:\qt\2010.04\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/cwchar:159: error: 
'::swprintf' has not been declared 
c:\qt\2010.04\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/cwchar:166: error: 
'::vswprintf' has not been declared 

Warum swprintf und vswprintf nicht erklärt, und wie kann ich dieses Problem beheben?

+1

Hat jemand von euch einen Fehlerbericht bei Qt eingereicht? –

+0

Nicht dass ich mich erinnere. –

+0

Nur eine Notiz, 'vswprintf' sollte eigentlich als [' wvsprintf'] aufgerufen werden (https://msdn.microsoft.com/en-us/library/windows/desktop/ms647551 (v = VS.85) .aspx) unter Windows. Sie würden erwarten, dass es 'vwsprintf()' oder 'vwcsprintf()' oder etwas im Anschluss an den anderen Konventionen sein, aber 'wvsprintf()' es ist. – bobobobo

Antwort

11

Versuchen in

setzen
#undef __STRICT_ANSI__ 

vor einschließlich stdio.h

+0

Oder kompilieren Sie nicht mit dem -ansi-Schalter? Sieht nach fehlerhaften Headern aus. – wilx

+4

Das Kompilieren mit '-std = C++ 0x' scheint dies auch ohne eine explizite '-ansi' zu verursachen (in ye olde MinGW GCC 4.4.0). Ein neuerer GCC sollte das reparieren (und make -std = C++ 0x "redundant" machen), aber ich habe es noch nicht überprüft. – Steve314

3

hatte das gleiche Problem Kompilieren Grantlee mit MinGW (Qt 2.010,05).

Wie ich es zu kompilieren:

  • find Datei cwchar (C: \ Qt \ 2.010,05 \ mingw \ lib \ gcc \ mingw32 \ 4.4.0 \ include \ C++ \ cwchar)
  • Kommentar folgende Zeilen aus (um die Linie 160)

    Verwendung :: swprintf;

    mit :: vswprintf;

2

Beim Ausführen stellen Sie sicher, dass -ansi Flag nicht gesetzt ist. Wenn dieses Flag verwendet wird, entfernen Sie es und das Problem wird gelöst.

Verwandte Themen