2014-01-22 333 views
0

我試圖使用Visual Studio 2012中編譯以下文件這是未能從源代碼編譯的Qt 5.2.0 isnan:的Qt構建失敗因缺少的std ::在Visual Studio 2012

/qtdeclarative/src/qml/jsruntime/qv4value_p.h

,出現以下錯誤:

191: error C2039: _isnan: is not a member of std

191線包含以下內容:

return doubleValue() && !std::isnan(doubleValue());

According to cppreferencestd::isnan應該在頭文件cmath中定義,因爲C++ 11。 Qt頭文件包含這個頭文件。當我在Visual Studio中檢查cmath時,我看不到名爲isnan的函數。

我的結論是VS2012缺少這個C++ 11的功能嗎?起初我以爲我可能不得不以某種方式啓用C++ 11支持,但根據this answer默認情況下啓用C++ 11支持。鑑於binary downloads for Qt are available for VS2010 and VS2012,顯然它可以與各自的編譯器一起構建。有什麼我失蹤?

+0

什麼是你的Qt配置選項?你可以嘗試建設5.2.1嗎?令我感到困惑的是,VS2012構建是Qt的持續集成構建http://qt-project.org/wiki/CI_Configurations http://testresults.qt-project.org/ci/QtDeclarative_stable_Integration/latest-success/ – peppe

回答

1

isnan在Visual Studio'sstandard庫中實現開始使用Visual Studio 2013年

有最有可能的某種定義告訴它你不必std::isnan提供。

+0

我會嘗試'#ifdef isnan'作爲檢查,如果沒有定義函數,那麼這個符號應該可以作爲宏(宏解釋錯誤信息)。 –

+0

謝謝。我將嘗試將-no-C++ 11傳遞給Qt的配置工具,並查看是否可行。如果沒有,我會按照你的建議檢查定義。 – JBentley

+0

我只是瞥了一眼代碼,並且沒有辦法用VS2010或2012編譯。我的猜測是這個模塊不包含在內。 –

相關問題