Я пытаюсь использовать clang10 с libstdc ++ mingw-w64, так как заголовки MSV C не поддерживают clang 10. Я не против иметь новые части стандартной библиотеки, я просто хочу использовать новые возможности языка.
У меня mingw-w64 версии 8.1.0 для x86_64 с установленными потоками POSIX и исключениями SEH, и я запускаю clang с помощью команды:
clang++ -target x86_64-pc-windows-gnu -std=c++20 ...
Все работает нормально. Все языковые функции, которые должны быть реализованы в clang 10, работают, но когда я выкидываю любое исключение, это происходит, когда я запускаю программу (программа компилируется нормально):
Mingw-w64 runtime failure:
Unknown pseudo relocation protocol version 65536.
Я попытался установить mingw с исключениями SJLJ и используйте флаг -fsjlj-exceptions
в clang, но программа даже не компилируется:
C:\Users\egst\AppData\Local\Temp\test-f4a4de.o:test.cpp:(.text+0x82): undefined reference to `__gxx_personality_sj0'
C:\Users\egst\AppData\Local\Temp\test-f4a4de.o:test.cpp:(.text+0xd9): undefined reference to `_Unwind_SjLj_Register'
C:\Users\egst\AppData\Local\Temp\test-f4a4de.o:test.cpp:(.text+0x177): undefined reference to `_Unwind_SjLj_Resume'
clang++ --version
показывает Target: x86_64-pc-windows-msvc
. Может быть, есть версия для x86_64-pc-windows-gnu
, которую я должен использовать вместо этого? Есть ли способ заставить это работать в данный момент, или я должен ждать поддержки от MSV C? Есть ли альтернатива, кроме MSV C и MinGW?