>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Регистрация http://forum.mozilla-russia.org/viewtopic.php?id=32980 |
alex171069 > 24-03-2009 16:15:14 |
Господа, я уже задлбался регистрить компанент который не регистрится как его не крути .... Причем непонятно почему точно такой же компанент с исходниками взятый как пример компилю MakFile и выполняю и все регистрится ....! SimpleTest.cpp class SimpleTest : public nsISimpleTest NS_IMPL_ISUPPORTS1(SimpleTest, nsISimpleTest) NS_IMETHODIMP *r = a + b; NS_GENERIC_FACTORY_CONSTRUCTOR(SimpleTest) // 5e14b432-37b6-4377-923b-c987418d8429 static const nsModuleComponentInfo components[] = NS_IMPL_NSGETMODULE(SimpleTestModule, components) И по nsISimpleTest.idl сгенерил .h файл #ifndef __gen_nsISupports_h__ /* For IDL files that don't want to include root IDL files. */ /* starting interface: nsISimpleTest */ #define NS_ISIMPLETEST_IID \ class NS_NO_VTABLE NS_SCRIPTABLE nsISimpleTest : public nsISupports { NS_DECLARE_STATIC_IID_ACCESSOR(NS_ISIMPLETEST_IID) /** }; NS_DEFINE_STATIC_IID_ACCESSOR(nsISimpleTest, NS_ISIMPLETEST_IID) /* Use this macro when declaring classes that implement this interface. */ /* Use this macro to declare functions that forward the behavior of this interface to another object. */ /* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */ #if 0 /* Header file */ nsSimpleTest(); private: protected: /* Implementation file */ nsSimpleTest::nsSimpleTest() nsSimpleTest::~nsSimpleTest() /* long add (in long a, in long b); */ /* End of implementation class template. */ #endif /* __gen_nsISimpleTest_h__ */ И ВСЕ ЭТО НОРМАЛЬНО СКОМПИЛИЛОСЬ И ЗАРЕГИСТРИЛОСЬ КАК КОМПОНЕНТ, В ПОСЛЕДСТВИИ Я СОЗДАЛ СВОЙ КОМПОНЕНТ НО РАЗДЕЛИЛ КАК И ГЛАСИД ДОКА К SDK НА НЕСКОЛЬКО ФАЙЛОВ IMyComponent.idl MyComponent.cpp MyComponent..h IMyComponent.xpt MyComponentModule.cpp ГОСПОДА ГДЕ МОЖЕТ БЫТЬ РАЗГАДКА - в КАКУЮ СТОРОНУ КОПАТЬ (КАК ЗАРЕГИСТРИТЬ КОМПОНЕНТ)? |
Anton > 24-03-2009 17:11:56 |
'MyComponent.xpt' - он точно от вашего компонента, а не от эталонного ? GUID в *.idl и в процедуре регистрации компонента совпадают ? Описание интерфейса имеет атрибут 'scriptable' ? |
alex171069 > 25-03-2009 10:57:09 |
Со всеми UUid b scriptable все как раз в норме проверял сам не раз, однако смущает одна вещь - размер получившийся .so у меня 5.5Kb а у эталонного примеры 26kb . Приведу MakeFile для внятности. CXX = c++ APPEND_REW=/data/sites/xul_src/_mozilla/dist/include XZ_ADD2=/data/sites/xul_src/_mozilla/dist FILES_O = MyComponent.o build: # // worker modul # MyComponentModule.cpp MyComponent.cpp MyComponent.o $(CXX) -fno-rtti -fno-exceptions -Wall -Wconversion -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wcast-align -Wno-long-long -pedantic -fno-strict-aliasing -fshort-wchar -pthread -pipe -DNDEBUG -DTRIMMED -Os -freorder-blocks -fno-reorder-functions -finline-limit=50 -fPIC -shared -Wl,-z,defs -Wl,-h,MyComponent.so -o MyComponent.so MyComponent.o -lpthread \ chmod +x $(TARGET) |