2013-04-27 82 views
0

我想使用clang進行C++開發(windows現在,但是,linux,android等...),到目前爲止,在過去的6個月中,我能夠編譯相當複雜的代碼幾乎沒有問題。但是幾個星期前,我偶然發現了這個問題,而異常沒有得到處理。我研究並閱讀了我能找到的任何東西,但如果可以對mingw/g ++/llvm/clang的任意組合使用異常,我仍然沒有確定的答案。 迄今爲止最接近的線索似乎是ruben的構建,但由於另一個已知問題 - strerror_s,我無法讓他們工作。鏗鏘支持Windows xp的例外

最小碼我試圖做的工作很簡單:

int main() 
{ 
    try { throw 0; } 
    catch(...) { return 1; } 
    return 0; 
} 

任何幫助,將不勝感激,因爲我已經停止了我的工作,我在努力獲得例外下去。

感謝, 的Orlin ++

+0

我通過鐺碼加強,似乎所有需要的函數調用發出(__cxa_allocate_exception,__cxa_throw,__cxa_begin_catch,__cxa_end_catch),但生成的彙編,我不扔後看到什麼(抓缺失) – Orlin 2013-04-28 19:06:30

回答

0

對不起你和我建立的麻煩。我必須承認Windows XP在我的優先級列表中並不高......

你可以嘗試的是在Windows XP上使用GCC dw2工具鏈自己構建clang 3.2,以避免使用有問題的strerror_s函數。這是隻影響鐺二進制文件的東西,而不是它們產生的任何二進制文件。

+0

所以這可能是迄今爲止最好的消息......你是否說有一些偶然的例外情況會起作用?實際上我試着編譯3.2版本,但得到了strerror_s和其他類似的編譯錯誤,所以我放棄了。但現在我會再試一次。我將鏈接msvcr100.dll。一個問題:我是否也需要編譯rt?謝謝!如果這樣做會很好。 – Orlin 2013-05-02 12:42:36

+0

Orlin:我的叮噹搭配與GCC 4.6 dw2搭配在一起,異常應該可以正常工作。唯一的問題是,Clang二進制文件使用在Win XP上不可用的strerror_s(顯然Clang假設它在Windows上)。 – rubenvb 2013-05-02 12:44:38

+0

嗨魯本,我用i686-w64-mingw32-gcc-dw2-4.6.3-2-release-win32_rubenvb.7z成功構建了llvm/clang(但我必須鏈接msvcr100.dll)。現在,當我嘗試編譯我的示例時,出現與重命名TempFile相關的IO錯誤:「致命錯誤:後端錯誤:IO輸出流失敗。」我能夠追蹤到MoveFileExW,它指出該文件正在被其他進程使用。你有什麼想法?我會繼續調試幾天。謝謝你的幫助!奧林++ – Orlin 2013-05-03 03:40:59