簡體   English   中英

Windows上的Firebreath插件無法在Chrome中加載

[英]Firebreath plugin on windows fails to load in chrome

我忙現有firebreath插件將在這里使用GPGME而不是使通過OS和GPG二進制調用。

我已經設法使代碼在x32系統上使用VS 2010在Windows中編譯,但是將插件加載到chrome后,我根本無法訪問npapi代碼。 即使是簡單的版本調用也會失敗。

加載插件時,我看不到任何可見錯誤,但是當使用適用於Chrome的sawbuck日志查看器時,我得到了以下erorr消息。

.\renderer\webplugin_delegate_proxy.cc  347 PluginMsg_Init returned false
..\plugins\npapi\webplugin_impl.cc  271 Couldn't initialize plug-in

我嘗試將代碼與firebreath 1.4和1.6一起使用,但兩個版本均不起作用。 經過一些簡單的調試之后,似乎使用gpgme提供的任何代碼(無論是否調用)都會導致插件中斷。

通過執行以下操作,我得出了這個結論。

  1. 創建了一個帶有firebreath(版本1.4和1.6)的新項目
  2. 將gpgme.h標頭添加到gmailGPGAPI.cpp,除了將必需的引用路徑添加到項目外,沒有進行任何其他更改。
  3. 生成項目以創建dll(這會很好地生成dll)。
  4. 在步驟2中,用dll替換項目中現有的ddl,並使用以下代碼對其進行測試

插件= document.createElement('object'); plugin.id ='插件';
plugin.type ='應用程序/ x-gmailtest';
document.body.appendChild(plugin);
console.log(“我的插件返回:” + plugin.valid);
console.log(“我的插件返回:” + plugin.version);

  1. 這將返回有效= true,並且版本將返回我設置的值。
  2. 然后,我通過在version方法中調用gpgme_check_version(NULL)來修改gmailGPGAPI.cpp現在返回gpg版本。 我使用該方法是因為它可能是我可以測試的最簡單的返回函數。
  3. 生成插件並將dll復制到chrome擴展程序,如步驟3-4所示。 該插件可以再次正常構建。
  4. 加載插件並嘗試執行第4步中的代碼,此時,它只是針對我嘗試在插件上訪問的任何屬性或方法返回undefined。 除了記錄到sawbuck的錯誤外,沒有錯誤會打印到控制台或chrome中的其他任何地方。

我不知道在哪里尋找或嘗試什么,因為我似乎無法解決一個可行的錯誤。 我還通過測試代碼來簡化它,使其只是一個新項目,但只進行了一行更改,以便更輕松地發現問題。

我應該注意回購中的代碼在linux / OSX中可以很好地構建,並且可以正確加載到chrome中,因此我知道我的代碼確實可以正常工作。

兩種可能的路徑:

  1. 您可能具有無法使用的DLL依賴項,從而無法加載插件。 如果您在無法在chrome上運行的狀態下對其運行regsvr32,是否可以正常工作?
  2. 您的插件可能正在加載,然后崩潰了。 使用--plugin-startup-dialog啟動chrome,然后在彈出對話框時警告您即將加載插件,請將該插件附加到該進程,然后查看該進程是否崩潰。 在這一點上,您還可以設置斷點,以試圖弄清楚它能走多遠。

還要在PluginConfig.cmake中再次檢查您的元數據; 有時在某些字段中出現不尋常的字符可能會導致此類問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM