Mozilla использует C DLL с js-ctypes - PullRequest
       39

Mozilla использует C DLL с js-ctypes

1 голос
/ 05 февраля 2012

Я пытаюсь собрать dll, а затем использовать его с расширением Firefox.

Мне удалось собрать DLL с помощью gcc под Windows:

#include<stdio.h>
int add(int a,int b)
{
    return(a+b);
}

Я пытаюсь сейчасиспользовать его через мою DLL.После прочтения некоторых постов, особенно этого, мне не удалось сделать эту работу: Ссылка бинарного компонента на js-ctypes

Каждый раз, когда я пробую ctypes.open,сообщение об ошибке: не удалось загрузить библиотеку .Тем не менее, путь к DLL правильный.Вот код JS:

Components.utils.import("resource://gre/modules/ctypes.jsm");

AddonManager.getAddonByID("greenfox@octo.com", function(addon)
{
    var libcPath = addon.getResourceURI("components/library.dll");

    if (libcPath instanceof Components.interfaces.nsIURI)
    {
        var libc = ctypes.open(libcPath.path);

        var libc = ctypes.open(libc);

        /* import a function */
        var puts = libc.declare("add", /* function name */
                   ctypes.default_abi, /* call ABI */
                   ctypes.int32_t, /* return type */
                   ctypes.int32_t, /* argument type */
                   ctypes.int32_t /* argument type */
          );

          var ret = puts(1,2);

          alert("1+2="+ret);

    }

Есть идеи?

1 Ответ

1 голос
/ 07 февраля 2012

Часть пути URI - это не то, что вам нужно здесь - вам нужен путь к файлу:

if (libcPath instanceof Components.interfaces.nsIFileURL)
{
    var libc = ctypes.open(libcPath.file.path);

Документация

...