C++ WebKit和npapi以及mingw-w64

C++ WebKit和npapi以及mingw-w64,c++,gcc,pointers,webkit,win64,C++,Gcc,Pointers,Webkit,Win64,问题如下: 在Windows x64上,指针是64位的,但long类型是32位的。 MSVC似乎并不在意,甚至在默认警告级别上忽略了有关指针截断的警告。 最近,有一个GCC针对x86_64-w64-mingw32或更好的本机Windows x64。当指针被截断时,GCC会产生错误(这是合乎逻辑的事情…),这会在WebKit和更具体地说,Netscape插件API中造成问题: 首先是文件(我只能发布一个超链接…): 桥接器/npapi.h-->将uint32定义为32位整数类型(~第145行)

问题如下: 在Windows x64上,指针是64位的,但long类型是32位的。 MSVC似乎并不在意,甚至在默认警告级别上忽略了有关指针截断的警告。 最近,有一个GCC针对x86_64-w64-mingw32或更好的本机Windows x64。当指针被截断时,GCC会产生错误(这是合乎逻辑的事情…),这会在WebKit和更具体地说,Netscape插件API中造成问题: 首先是文件(我只能发布一个超链接…):

桥接器/npapi.h-->将uint32定义为32位整数类型(~第145行)
plugins/win/PluginViewWin.cpp-->将Windows窗口句柄强制转换为32位整数,并截断它们(~450行)

我建议的修复方法是将uint32强制转换更改为uintptr_t,这使GCC感到高兴,但仍然在uint32(=无符号长)中放入64位值。我不知道如何解决这个问题,因为显然WebKit很乐意截断Win64上的指针


我怎样才能用正确的方法解决这个问题?谢谢

对于任何感兴趣的人,我已经将uint32 lparam、wparam更改为uintptr\t。它是一个仅在Windows中可见的cange,在Windows中它肯定是正确的修复程序。

该修补程序已被接受,现在位于Mozilla trunk和Webkit master中