Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mozilla将C DLL与js ctypes一起使用_C_Firefox_Dll_Firefox Addon_Jsctypes - Fatal编程技术网

Mozilla将C DLL与js ctypes一起使用

Mozilla将C DLL与js ctypes一起使用,c,firefox,dll,firefox-addon,jsctypes,C,Firefox,Dll,Firefox Addon,Jsctypes,我打算构建一个dll,然后将其与Firefox扩展一起使用 我设法在Windows下使用gcc构建了一个DLL: #包括 整数相加(整数a,整数b) { 返回(a+b); } 我现在尝试通过我的dll使用它。在阅读了一些帖子后,尤其是这篇,我无法做到: 每次尝试ctypes.open时,我都会收到错误消息:无法加载库。但是,DLL路径是正确的。以下是JS代码: Components.utils.import(“resource://gre/modules/ctypes.jsm"); Addon

我打算构建一个dll,然后将其与Firefox扩展一起使用

我设法在Windows下使用gcc构建了一个DLL:

#包括
整数相加(整数a,整数b)
{
返回(a+b);
}
我现在尝试通过我的dll使用它。在阅读了一些帖子后,尤其是这篇,我无法做到:

每次尝试ctypes.open时,我都会收到错误消息:无法加载库。但是,DLL路径是正确的。以下是JS代码:

Components.utils.import(“resource://gre/modules/ctypes.jsm");
AddonManager.getAddonByID(“greenfox@octo.com,函数(加载项)
{
var libcPath=addon.getResourceURI(“components/library.dll”);
if(libcPath instanceof Components.interfaces.nsURI)
{
var libc=ctypes.open(libcPath.path);
var libc=ctypes.open(libc);
/*导入函数*/
var puts=libc.declare(“add”,/*函数名*/
ctypes.default_abi,/*调用abi*/
ctypes.int32\u t,/*返回类型*/
ctypes.int32\u t,/*参数类型*/
ctypes.int32\u t/*参数类型*/
);
var ret=看跌期权(1,2);
警报(“1+2=“+ret”);
}

你知道吗?

URI的路径部分不是你想要的-你想要文件路径:

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

URI的路径部分不是您想要的-您想要文件路径:

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

您是否在
install.rdf
中指定了
true
?是的,我在包含extesion的文件夹中进行了检查:DLL在那里从libcPath收集的路径是这个:/C:/Users/frinux/AppData/Roaming/Mozilla/Firefox/Profiles/y8d4lq.default/extensions/greenfox@octo.com/components/library.dland我也尝试移动此li读入C:,然后调用ctypes.open(“C:/library.dll”);但是没有成功您是否在
install.rdf
中指定了
true
?是的,我在包含扩展名的文件夹中进行了检查:DLL在那里从libcPath收集的路径是这个:/C:/Users/frinux/AppData/Roaming/Mozilla/Firefox/Profiles/y8d44lq.default/extensions/greenfox@octo.com/components/library.dland我也尝试了mov将此库转换为C:,然后调用ctypes.open(“C:/library.dll”);但没有成功是的,我先尝试了(我先看了你的stackoverflow帖子)。路径是好的,但仍然有此错误。我想知道我的DLL是否正常?它已编译,但是否有任何方式无法使用?我如何测试我的DLL?我发布了一个新问题,因为问题似乎不是来自JS,而是来自DLL:是的,我先尝试了(我首先遵循了你的stackoverflow帖子)。路径是好的,但仍然有此错误。我想知道我的DLL是否正常?它已编译,但是否有任何方式无法使用?如何测试我的DLL?我发布了一个新问题,因为问题似乎不是来自JS,而是来自DLL: