使用 llvm 5.0.0 目标 x86_64-w64-windows-gnu 构建 wxwidgets 3.0.3 时 mediactrl_am.cpp 出错

Error in mediactrl_am.cpp while building wxwidgets 3.0.3 with llvm 5.0.0 target x86_64-w64-windows-gnu

我最近用 mingw-w64 7.2.0 编译了 wxWidgets 3.0.3,但是由于异常处理的一些问题现在我正在尝试用 [=30 重新编译它们=]llvm 5.0.0(使用 x86_64-w64-windows-gnu 目标,来自 mingw-w64 7.2.0 的标准库,64 位,seh, posix 个线程) 没有那些问题。

我没有在 Windows 上找到如何使用 Clang 构建 wxWidgets 当前稳定版本 (3.0.3) 的说明。所以我正在尝试

这样的命令
mingw32-make.exe -f makefile.gcc MONOLITHIC=1 SHARED=1 BUILD=debug CXXFLAGS=" -fexceptions -fasynchronous-unwind-tables -fnon-call-exceptions -std=gnu++11 -pthread " LDFLAGS=" -fexceptions -fasynchronous-unwind-tables -fnon_call_exceptions -pthread "  CC="clang -target x86_64-w64-windows-gnu" CXX="clang++ -target x86_64-w64-windows-gnu" COMPILER_PREFIX="clang"

在 ..\build\msw 子目录中构建可能的配置之一。

(对于 mingw-w64,我也使用了 LDFLAGS=" -Wl,--allow-multiple-definition ",这里可能也会出现多个符号的问题。我也有 pathched 源代码,因为我对 wxPrintf 有问题)

我遇到的第一个错误:

../../src/msw/mediactrl_am.cpp:2234:10: error: case value evaluates to
      4294966687, which cannot be narrowed to type 'DISPID' (aka 'long')
      [-Wc++11-narrowing]
    case 0xfffffd9f: // readystatechange in IActiveMovie2 and IMediaPlayer
         ^
1 error generated.

我在wxWidgets论坛的账号还没有激活,所以我在这里问一下。

可能有人知道如何修复这个问题的正确方法?

这个特定问题的明显解决方法似乎是用 -609 替换这个值。

但是我需要警告你,据我所知,到目前为止还没有人使用 clang 编译过 wxMSW(尽管 clang 可以用于编译 wxGTK 和 wxOSX,当然),所以你可能 运行 稍后再讨论其他不那么琐碎的问题。我还建议尝试编译最新的 git master 而不是 3.0.3,因为 clang 构建可能需要的任何重要更改不太可能在稳定的 3.0 分支中完成。