I have registered a binary component in my chrome.manifest:
binary-component components/linux/myLib.so abi=Linux_x86-gcc3
Now I want to pass its path to ctypes.open(). My question is: how do I reference the binary component so I can pass it to ctypes.open()?
The binary components listed in chrome.manifest should be XPCOM components. Yours on the other hand is a regular library, no need to list it in the manifest – it is a very “manual” approach instead. Your code needs to check nsIXULRuntime.XPCOMABI (see https://developer.mozilla.org/En/NsIXULRuntime) to see whether the platform is compatible. Then you need to get the location of your library file, something like this:
The first parameter to getAddonByID() needs to be replaced by the ID of your add-on of course. And the assumption here is that your add-on is installed unpacked (
<em:unpack>true</em:unpack>specified in install.rdf) because otherwise there won’t be a file on disk to be loaded.