代码之家  ›  专栏  ›  技术社区  ›  rubenvb

WebKit和NPAPI以及MingW-W64

  •  0
  • rubenvb  · 技术社区  · 14 年前

    问题如下: 在Windowsx64上,指针是64位的,但类型long是32位的。 msvc似乎并不在意,甚至在默认警告级别上忽略了有关指针截断的警告。 最近,有一个gcc针对x86_64-w64-mingw32或更好的本机windows x64。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很高兴,但仍然在uint32(=unsigned long)中放入64位值。我不知道如何解决这个问题,因为很明显webkit很乐意截断win64上的指针…

    我怎样才能解决这个问题呢?谢谢!

    1 回复  |  直到 14 年前
        1
  •  0
  •   rubenvb    14 年前

    对于任何感兴趣的人,我已经将uint32 lparam,wparam更改为uintptr_t's。它是一个只在windows中可见的cange,在windows中它肯定是正确的修复imho。