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)

Safari NPAPI 插件和视网膜支持

如何在 linux 中为 chrome 打包一个 NPAPI 插件?

从 Firefox 扩展调用 NPAPI 插件功能

如何安装 MinGW-w64 和 MSYS2?

在 C# 中构建 NPAPI 插件