Проблема заключается в следующем:
В Windows x64 указатели являются 64-разрядными, а тип long - 32-разрядными.
MSVC, кажется, не заботится, и даже пропускает предупреждения об усечении указателя на уровне предупреждений по умолчанию.
С недавних пор существует GCC, предназначенный для x86_64-w64-mingw32, или лучше родной Windows x64. GCC выдает ошибки, когда указатели усекаются (что логично сделать ...), и это вызывает проблемы в WebKit и, более конкретно, в API-интерфейсе плагина Netscape:
Во-первых, есть файлы (я могу опубликовать только одну гиперссылку ...):
http://trac.webkit.org/browser/trunk/WebCore/
bridge / npapi.h -> определяет uint32 как 32-битный тип int (~ строка 145)
plugins / win / PluginViewWin.cpp -> переводит дескрипторы окна Windows в 32-битное целое, обрезая их (~ строка 450)
Мое предлагаемое исправление состояло в том, чтобы изменить приведение uint32 к uintptr_t, что делает GCC счастливым, но все же помещает 64-разрядное значение в uint32 (= unsigned long). Я понятия не имею, как решить эту проблему, потому что ясно, что WebKit счастлив усекать указатели на Win64 ...
Как я могу решить это правильно? Спасибо!