Бинарные компоненты, перечисленные в chrome.manifest, должны быть компонентами XPCOM. С другой стороны, у вас обычная библиотека, нет необходимости перечислять ее в манифесте - вместо этого это очень «ручной» подход. Ваш код должен проверить nsIXULRuntime.XPCOMABI (см. https://developer.mozilla.org/En/NsIXULRuntime), чтобы узнать, совместима ли платформа. Затем вам нужно узнать местоположение вашего библиотечного файла, примерно так:
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAddonByID("myAddon@foo.com", function(addon)
{
var uri = addon.getResourceURI("components/linux/myLib.so");
if (uri instanceof Components.interfaces.nsIFileURL)
{
ctypes.open(uri.file.path);
...
}
});
Первый параметр getAddonByID () должен быть заменен идентификатором вашей надстройки. И здесь предполагается, что ваше дополнение установлено распакованным (<em:unpack>true</em:unpack>
указано в install.rdf), потому что в противном случае на диске не будет файла для загрузки.