NS_WITH_SERVICE(bcIXPCOMWrappers,xpcomWrappers,kXPCOMWrappers,&r);
nsCOMPtr<bcIXPCOMWrappers> xpcomWrappers = do_GetService(BC_XPCOMWRAPPERS_CONTRACTID, &r);
extern "C" NS_EXPORT nsresult NSGetModule(nsIComponentManager *compMgr,                                          nsIFile *location,                                          nsIModule** result)  //I am using it for initialization only{    static int counter = 0;  //we do not need to call it on unload time;    nsresult r;    if (counter == 0) {        counter ++;        bcIBlackConnectInit *blackConnectInit;        r = nsComponentManager::CreateInstance("bcBlackConnectInit",                                               nsnull,                                               NS_GET_IID(bcIBlackConnectInit),                                               (void**)&blackConnectInit);        if (NS_SUCCEEDED(r)) {            nsIComponentManager* cm;	    nsIXPIDLServiceManager *sm;	    r = NS_GetGlobalComponentManager(&cm);	    if (NS_SUCCEEDED(r)) {	        blackConnectInit->InitComponentManager(cm);	    }	    NS_WITH_SERVICE(bcIXPCOMWrappers,xpcomWrappers,kXPCOMWrappers,&r);	    nsIID * wrapperIID;	    if (NS_SUCCEEDED(r)) {	        r = xpcomWrappers->GetWrapper((nsISupports*)NULL,NS_GET_IID(nsIServiceManager),&wrapperIID, (nsISupports**)&sm);		if (NS_SUCCEEDED(r)) {		    printf("--[c++]about to call blackConnectInit->InitServiceManager(sm)\n");		    blackConnectInit->InitServiceManager(sm);		}	    }	}    }    return NS_ERROR_FAILURE;}