使用 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 分支中完成。
我最近用 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 分支中完成。