构建Mozilla js ctypes使用的DLL

构建Mozilla js ctypes使用的DLL,dll,firefox-addon,mozilla,jsctypes,Dll,Firefox Addon,Mozilla,Jsctypes,关于我的第一篇文章: 我正在尝试从Mozilla Firefox扩展中构建一个DLL。我创建了一个小C代码,并用GCC编译了它 下面是C代码: #include<stdio.h> int add(int a,int b) { return(a+b); } DLL编译得很好,我可以用dllexp打开它,并且可以看到add()方法的公开 问题是,当我试图从我的扩展使用它时,我总是收到这样的消息:错误:无法打开库 以下是我的Javascript调用: var libc = cty

关于我的第一篇文章:

我正在尝试从Mozilla Firefox扩展中构建一个DLL。我创建了一个小C代码,并用GCC编译了它

下面是C代码:

#include<stdio.h>
int add(int a,int b)
{
    return(a+b);
}
DLL编译得很好,我可以用dllexp打开它,并且可以看到add()方法的公开

问题是,当我试图从我的扩展使用它时,我总是收到这样的消息:错误:无法打开库

以下是我的Javascript调用:

var libc = ctypes.open("C:\\WINDOWS\\system32\\user32.dll"); //OK
var libc2 = ctypes.open("C:\\WINDOWS\\system32\\library.dll"); //KO
似乎Firefox无法打开DLL,但我想知道为什么。我没有看到任何关于为Firefox扩展构建DLL的内容,似乎我们可以使用所有经典的DLL库


有什么想法吗?谢谢

如果您像这样编译库,那么您对
msvcrt.dll
的依赖性可能无法在您的系统上解决(必需),而在我的系统上则可以正常工作。您可以在不依赖CRT的情况下编译库,只需自己定义
DllMain

#包括
BOOL WINAPI DllMain(HINSTANCE hinstDLL、DWORD FDFREASON、LPVOID lpvReserved)
{
返回TRUE;
}
整数相加(整数a,整数b)
{
返回(a+b);
}
链接步骤如下所示:

gcc -shared -nostdlib -o library.dll library.o -Wl,-e_DllMain@12

你不能使用CRT功能——我找不到一个在GWindows上静态地编译GCC的运行时(Visual C++ +另一方面它就很好)。< /P> < P>如果你编译这个库,你就得到了一个依赖于<代码> MsCRCR.DLL<代码>,这可能在你的系统上无法解决(需要),在我的系统上它工作得很好。您可以在不依赖CRT的情况下编译库,只需自己定义

DllMain

#包括
BOOL WINAPI DllMain(HINSTANCE hinstDLL、DWORD FDFREASON、LPVOID lpvReserved)
{
返回TRUE;
}
整数相加(整数a,整数b)
{
返回(a+b);
}
链接步骤如下所示:

gcc -shared -nostdlib -o library.dll library.o -Wl,-e_DllMain@12

你不能使用CRT功能,我找不到一种在GWindows上静态地编译GCC的运行时间(Visual C++ +另一方面它就行了)。< / P >,谢谢你,没有你的帮助,我永远也做不到,因为这张票,也和以前的其他人一样!更准确地说,只需要C文件中的声明。带有-nostlib的编译行将阻止代码运行内核32函数,非常感谢,如果没有您的帮助,我将永远无法做到这一点!更准确地说,只需要C文件中的声明。带有-nostlib的编译行将阻止代码运行kernel32函数