WebKit 和 npapi 和 mingw-w64
Posted
技术标签:
【中文标题】WebKit 和 npapi 和 mingw-w64【英文标题】:WebKit and npapi and mingw-w64 【发布时间】:2010-04-18 08:41:43 【问题描述】:问题如下: 在 Windows x64 上,指针是 64 位的,但 long 类型是 32 位的。 MSVC 似乎并不关心,甚至在默认警告级别上忽略了有关指针截断的警告。 从最近开始,有一个针对 x86_64-w64-mingw32 或更好的原生 Windows x64 的 GCC。当指针被截断时,GCC 会产生错误(这是合乎逻辑的事情......),这在 WebKit 中造成了麻烦,更具体地说,在 Netscape 插件 API 中: 首先是文件(我只能发布一个超链接...):http://trac.webkit.org/browser/trunk/WebCore/ bridge/npapi.h --> 将 uint32 定义为 32 位 int 类型(~第 145 行) plugins/win/PluginViewWin.cpp --> 将 Windows 窗口句柄转换为 32 位 int,截断它们(~第 450 行)
我建议的解决方法是将 uint32 强制转换更改为 uintptr_t,这使 GCC 很高兴,但仍将 64 位值放入 uint32(=unsigned long)中。我不知道如何解决这个问题,因为显然 WebKit 很乐意在 Win64 上截断指针......
我怎样才能以正确的方式解决这个问题?谢谢!
【问题讨论】:
【参考方案1】:对于任何感兴趣的人,我已将 uint32 lparam、wparam 更改为 uintptr_t。这是仅在 Windows 中可见的问题,恕我直言,它肯定是正确的修复方法。
【讨论】:
补丁已经被接受,现在在Mozilla trunk和Webkit master中以上是关于WebKit 和 npapi 和 mingw-w64的主要内容,如果未能解决你的问题,请参考以下文章
Chrome禁用NPAPI插件(包含 SilverlightJava 和 Unity)