C++ C++;xpcom组件编译成功,但无法通过合同id访问
C++xpcom组件编译成功,但无法通过合同id访问 错误消息:C++ C++;xpcom组件编译成功,但无法通过合同id访问,c++,macos,firefox,mozilla,xpcom,C++,Macos,Firefox,Mozilla,Xpcom,C++xpcom组件编译成功,但无法通过合同id访问 错误消息: TypeError: Components.classes["@cozmixng.org/xpcom-sample/Calc;1"] is undefined 我从github查看了xpcom测试源代码,对Mac OSX上的编译做了一些更改, myCalcModule.cpp #include "mozilla/ModuleUtils.h" #include "nsIClassInfoImpl.h" #include "myC
TypeError: Components.classes["@cozmixng.org/xpcom-sample/Calc;1"] is undefined
我从github查看了xpcom测试源代码,对Mac OSX上的编译做了一些更改,
myCalcModule.cpp
#include "mozilla/ModuleUtils.h"
#include "nsIClassInfoImpl.h"
#include "myCalc.h"
NS_GENERIC_FACTORY_CONSTRUCTOR(myCalc)
NS_DEFINE_NAMED_CID(MY_CALC_CID);
static const mozilla::Module::CIDEntry kCalcCIDs[] = {
{ &kMY_CALC_CID, false, NULL, myCalcConstructor },
{ NULL }
};
static const mozilla::Module::ContractIDEntry kCalcContracts[] = {
{ MY_CALC_CONTRACT_ID, &kMY_CALC_CID },
{ NULL }
};
static const mozilla::Module::CategoryEntry kCalcCategories[] = {
{ "my-category", "my-key", MY_CALC_CONTRACT_ID },
{ NULL }
};
static const mozilla::Module kCalcModule = {
mozilla::Module::kVersion,
kCalcCIDs,
kCalcContracts,
kCalcCategories
};
NSMODULE_DEFN(myCalcModule) = &kCalcModule;
在这段代码中,将模块导出到动态库,在js中调用它
obj = Components.classes['@cozmixng.org/xpcom-
sample/Calc;1'].createInstance(Components.interfaces.myICalc);
使用XPCOMViewer,不能对@cozmixg.org/xpcom-sample/Calc进行微调;1
class!
整个包裹都在这里 二进制组件将是它编译时使用的对象。您是否使用与稍后尝试加载组件的Firefox二进制文件相同版本的XulRunner SDK/Firefox源代码编译代码?通常,如果版本不匹配并且错误被记录到错误控制台…非常感谢!我修复了在install.rdf中添加true的问题,因为如果(aFile.IsZip()){108 NS_错误(“无法从JARs加载二进制组件”);109返回null ptr;110},firefox无法从JARs文件107加载.so/.dll