2013-04-27 58 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