如何在最新的XULRunner sdk中使用Thebes类?

时间:2012-07-18 09:41:20

标签: firefox xul xpcom xulrunner

我使用XULRunner从7到11个版本运行良好的C ++代码:

    nsRefPtr<gfxWindowsSurface> targetSurface = new gfxWindowsSurface(hDC, gfxWindowsSurface::FLAG_FOR_PRINTING); 
    nsRefPtr<gfxContext> ctx = new gfxContext(targetSurface);

但是当我尝试用XULRunner 12及更高版本编译它时,它会导致链接错误:

error LNK2019: unresolved external symbol "public: __thiscall gfxContext::gfxContext(class gfxASurface *)" (??0gfxContext@@QAE@PAVgfxASurface@@@Z) 
error LNK2019: unresolved external symbol "public: __thiscall gfxWindowsSurface::gfxWindowsSurface(struct HDC__ *,unsigned int)" (??0gfxWindowsSurface@@QAE@PAUHDC__@@I@Z) 

我为xul.lib制作了dumpbin,发现现在没有针对THEBES API的任何导出。当SDK将版本从11更改为12时,它们被删除。 是否可以在最新的xulrunner sdk中使用二进制XPCOM中的gfxWindowsSurface和gfxContext?

谢谢,

塞尔

1 个答案:

答案 0 :(得分:0)

相关更改为bug 683891,另请参阅bug 718985进行扩展讨论。似乎不允许第三方直接访问图形代码。所以你的问题的答案是:不,你不能再用股票XULRunner这样做了。因此,您可以寻找其他方法来实现您的目标(例如,如错误中建议的更高级别的绘图表面,如<canvas>),或者您可以使用此特定修补程序创建自己的XULRunner构建版本。