問題は次のとおりです。Windowsx64では、ポインターは64ビットですが、long型は32ビットです。MSVCは気にしないようで、デフォルトの警告レベルでのポインターの切り捨てに関する警告も省略しています。最近から、x86_64-w64-mingw32、またはより優れたネイティブWindowsx64をターゲットとするGCCがあります。GCCは、ポインターが切り捨てられるとエラーを生成します(これは論理的なことです...)。これにより、WebKit、より具体的にはNetscapeプラグインAPIで問題が発生します。まず、ファイルがあります(ハイパーリンクは1つしか投稿できません。 。):
http
:
//trac.webkit.org/browser/trunk/WebCore/ bridge / npapi.h-> uint32を32ビットint型(〜line 145)
plugins / win/PluginViewWin.cppとして定義します-> Windowsウィンドウハンドルを32ビットintにキャストし、それらを切り捨てます(〜450行目)
私が提案した修正は、uint32キャストをuintptr_tに変更することでした。これにより、GCCは満足しますが、それでもuint32(= unsigned long)に64ビット値を入れます。明らかにWebKitはWin64でポインタを切り捨てて満足しているので、これを解決する方法がわかりません...
どうすればこれを正しい方法で解決できますか?ありがとう!