2010-08-10 36 views
10

我試圖編譯牡丹在Windows上使用MinGW和編譯過程中收到如下錯誤:swprintf和vswprintf未聲明?

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 

爲什麼的swprintf和vswprintf沒有宣佈,我怎麼能解決這個問題?

+1

你們有沒有在Qt上提交錯誤報告? – 2011-12-29 09:56:21

+0

不是我記得。 – 2011-12-29 22:55:13

+0

請注意,'vswprintf'實際上應該被稱爲['wvsprintf'](https://msdn.microsoft.com/en-us/library/windows/desktop/ms647551(v = vs.85).aspx)在Windows上。 你可以期望它是'vwsprintf()'或'vwcsprintf()'或其他約定,但是它是'wvsprintf()'。 – bobobobo 2016-04-20 14:43:19

回答

11

嘗試把在

#undef __STRICT_ANSI__ 

包括stdio.h中

+0

還是不用-ansi開關編譯?看起來像越野車頭。 – wilx 2010-08-10 10:27:04

+4

使用'-std = C++ 0x'進行編譯似乎甚至沒有顯式的'-ansi'(在MinGW GCC 4.4.0中)。一個新的GCC應該修復它(並且使'-std = C++ 0x'冗餘),但是我還沒有檢查。 – Steve314 2012-06-05 11:23:33

3

之前有編譯Grantlee使用MinGW的(QT 2010.05)同樣的問題。

我如何得到它來編譯:

  • 查找文件cwchar(C:\ Qt的\ 2010.05 \ MinGW的\ LIB \ GCC \的mingw32 \ 4.4.0 \包含\ C++ \ cwchar)
  • 請注意以下幾行(約160行)

    using :: swprintf;

    using :: vswprintf;

2

運行時請確保未設置-ansi標誌。如果正在使用此標誌,請將其移除,問題將解決。