Господа, я начал понимать, что чегото не понимаю я взял пример простейшего XPCOM компонента по адресу http://www.linux.org.ru/wiki/en/XUL_XPCOM и попытался его скомпилить как в статье по этому адресу описано . Компилил G++ в строгом соответствии с путями и наличием необходимых SDK . Процесс протекал на LINUX RED HUT И как же ябыл удивлен увидем такое колличество ошибок !? g++ -Wall -Os -o MyComponent.so -include mozilla-config.h -DXPCOM_GLUE -DXPCOM_GLUE_USE_NSPR -I /home/al/NetBeansProjects/XPCOM/gecko/include -I/home/al/NetBeansProjects/XPCOM -fno-rtti -fno-exceptions -shared -L /home/al/NetBeansProjects/XPCOM/gecko/lib -lxpcomglue_s -lxul -lxpcom -lplds4 -lplc4 -lnspr4 -lpthrea MyComponent.cpp MyComponentModule.cpp In file included from MyComponent.h:3, from MyComponent.cpp:1: IMyComponent.h:9:19: warning: extra tokens at end of #ifndef directive IMyComponent.h:36:63: error: macro "NS_DEFINE_STATIC_IID_ACCESSOR" passed 2 arguments, but takes just 1 /home/al/NetBeansProjects/XPCOM/gecko/include/nsISupportsBase.h:80: предупреждение: ‘class nsISupports’ has virtual functions but non-virtual destructor /home/al/NetBeansProjects/XPCOM/gecko/include/nsIProgrammingLanguage.h:32: предупреждение: ‘class nsIProgrammingLanguage’ has virtual functions but non-virtual destructor /home/al/NetBeansProjects/XPCOM/gecko/include/nsIClassInfo.h:33: предупреждение: ‘class nsIClassInfo’ has virtual functions but non-virtual destructor IMyComponent.h:25: предупреждение: ‘class IMyComponent’ has virtual functions but non-virtual destructor MyComponent.h:10: ошибка: expected constructor, destructor, or type conversion before ‘class’ MyComponent.cpp:3: ошибка: ‘MyComponent’ не был декларирован MyComponent.cpp: In function ‘nsrefcnt AddRef()’: MyComponent.cpp:3: ошибка: нет декларации ‘mRefCnt’ в этой области видимости MyComponent.cpp: At global scope: MyComponent.cpp:3: ошибка: ‘MyComponent’ не был декларирован MyComponent.cpp: In function ‘nsrefcnt Release()’: MyComponent.cpp:3: ошибка: нет декларации ‘mRefCnt’ в этой области видимости MyComponent.cpp:3: ошибка: некорректное использование ‘this’ в функции, не являющейся элементом MyComponent.cpp: At global scope: MyComponent.cpp:3: ошибка: ‘MyComponent’ не был декларирован MyComponent.cpp: In function ‘nsresult QueryInterface(const nsIID&, void**)’: MyComponent.cpp:3: ошибка: некорректное использование ‘this’ в функции, не являющейся элементом MyComponent.cpp:3: ошибка: некорректное использование ‘this’ в функции, не являющейся элементом MyComponent.cpp: At global scope: MyComponent.cpp:5: ошибка: ‘MyComponent’ не был декларирован MyComponent.cpp:5: ошибка: ISO C++ запрещает декларации ‘MyComponent’ без типа MyComponent.cpp: In function ‘int MyComponent()’: MyComponent.cpp:6: предупреждение: в функции, которая должна возвращать значение, отсутствует оператор return MyComponent.cpp: At global scope: MyComponent.cpp:8: ошибка: expected constructor, destructor, or type conversion before ‘::’ token MyComponent.cpp:11: ошибка: ‘MyComponent’ is not a class or namespace In file included from MyComponent.h:3, from MyComponentModule.cpp:2: IMyComponent.h:9:19: warning: extra tokens at end of #ifndef directive IMyComponent.h:36:63: error: macro "NS_DEFINE_STATIC_IID_ACCESSOR" passed 2 arguments, but takes just 1 /home/al/NetBeansProjects/XPCOM/gecko/include/nsISupportsBase.h:80: предупреждение: ‘class nsISupports’ has virtual functions but non-virtual destructor /home/al/NetBeansProjects/XPCOM/gecko/include/nsIProgrammingLanguage.h:32: предупреждение: ‘class nsIProgrammingLanguage’ has virtual functions but non-virtual destructor /home/al/NetBeansProjects/XPCOM/gecko/include/nsIClassInfo.h:33: предупреждение: ‘class nsIClassInfo’ has virtual functions but non-virtual destructor /home/al/NetBeansProjects/XPCOM/gecko/include/nsIFactory.h:31: предупреждение: ‘class nsIFactory’ has virtual functions but non-virtual destructor /home/al/NetBeansProjects/XPCOM/gecko/include/nsIModule.h:33: предупреждение: ‘class nsIModule’ has virtual functions but non-virtual destructor /home/al/NetBeansProjects/XPCOM/gecko/include/nsIGenericFactory.h:68: предупреждение: ‘class nsIGenericFactory’ has virtual functions but non-virtual destructor IMyComponent.h:25: предупреждение: ‘class IMyComponent’ has virtual functions but non-virtual destructor MyComponent.h:10: ошибка: expected constructor, destructor, or type conversion before ‘class’ MyComponentModule.cpp: In function ‘nsresult MyComponentConstructor(nsISupports*, const nsIID&, void**)’: MyComponentModule.cpp:4: ошибка: нет декларации ‘MyComponent’ в этой области видимости MyComponentModule.cpp:4: ошибка: нет декларации ‘inst’ в этой области видимости MyComponentModule.cpp:4: ошибка: expected type-specifier before ‘MyComponent’ MyComponentModule.cpp:4: ошибка: expected `;' before ‘MyComponent’ MyComponentModule.cpp: At global scope: MyComponentModule.cpp:10: ошибка: expected `}' before ‘{’ token MyComponentModule.cpp:10: ошибка: expected `}' before ‘{’ token MyComponentModule.cpp:10: ошибка: expected `}' before ‘{’ token MyComponentModule.cpp:10: ошибка: expected ‘,’ or ‘;’ before ‘{’ token MyComponentModule.cpp:10: ошибка: expected declaration before ‘}’ token MyComponentModule.cpp:4: предупреждение: ‘nsresult MyComponentConstructor(nsISupports*, const nsIID&, void**)’ defined but not used MyComponentModule.cpp:6: предупреждение: ‘components’ defined but not used make: *** [build] Ошибка 1 Я просто хотел бы узнать как же всеже скомпилить компанент - мне еще предстоит вставлять свои функции в компонент и перекомпилировать с ними Есть у кого нибудь опыт в этом трудном деле ? |
Мне кажется, все ошибки начинаются здесь. Возможно, скомпилированный xpidl *.h, требует ручной правки. |