[英]Firefox crash instantiating NPAPI plugin
我以前將整個插件作為具有許多全局和靜態變量的非常簡單的實現來工作,現在我將其轉換為基於對象的設計,以便可以安全地實例化多個實例等。
但是,由於這樣做了,因此在創建插件實例時,它會到達MyScriptableNPObject :: NewObject()方法,在該方法中它將嘗試調用createobject(),但永不返回,並且瀏覽器崩潰。
ScriptableNPObject* ScriptableNPObject::NewObject(NPP npp)
{
_DebugLog("ScriptableNPObject::NewObject");
ScriptableNPObject* newObj = (MyScriptableNPObject*)npnfuncs->createobject(npp, &_npclass);
_DebugLog("ScriptableNPObject::NewObject - end");
return newObj;
}
我在那里有一些基本的日志記錄,可以作為調試它的快速方法,並且可以看到正在按預期從getValue()調用此方法,但是最終日志永遠不會出來,因此createobject()中顯然出了點問題)。
我已經為我的NPObject定義了自己的Allocate()方法,據我所知,NPClass似乎已正確定義,如下所示-
NPObject* ScriptableNPObject::_Allocate(NPP npp, NPClass *aClass)
{
return (NPObject *)new ScriptableNPObject(npp);
}
NPClass ScriptableNPObject::_npclass = {
NP_CLASS_STRUCT_VERSION,
ScriptableNPObject::_Allocate,
ScriptableNPObject::_Deallocate,
NULL,
ScriptableNPObject::_HasMethod,
ScriptableNPObject::_Invoke,
ScriptableNPObject::_InvokeDefault,
ScriptableNPObject::_HasProperty,
ScriptableNPObject::_GetProperty,
NULL,
NULL,
NULL,
ScriptableNPObject::_Construct,
};
從我所見,npnfuncs結構也是有效的。 所以我對發生的事情有些困惑!
任何幫助將不勝感激,
謝謝。
在調試器中檢查您的npnfuncs指針; 我敢打賭這有問題。
除非如此,否則請獲取mozilla源碼並構建調試版本,以便您可以逐步遍歷代碼並確切查看崩潰的位置。 這是查找類似您所描述的指針問題的最簡單方法。
認真地說,盡管我同意Georg所說的(盡管我確實有偏見):看看FireBreath,它可以為您節省大量的故障排除時間,並且如果您願意的話,可以更輕松地移植到IE。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.