Hi all,
I downloaded the latest gecko-sdk, which provided me with the most needed tools. I made a simple C++ implementation of a fairly simple "nsIHelloWorld" interface, only containing a "string GetHelloWorld()" method. This all goes well, see for code below.
All together it builds a DLL file called helloworld.dll and a .xpt file of the IDL interface. When pulling them into the components directory I run regxpcom to register both of them.
Now my components directory looks like:
components > ... helloworld.xpt helloworld.dll ... compreg.dat xpti.dat
This seems Okay. When digesting through the xpti.dat file, I clearly see that helloworld.xpt was found (yay), however, when looking into compreg.dat I can't find helloworld.dll.
My question: Where to put the helloworld.dll file, and how to register it properly, so it is usable with firefox/gecko.
Some extra information: firefox: release 1.0 (release version) os: windows (and linux, same problem)
Regards, Sjoerd
--- CODE HelloWorld.cpp ---
#include "mozilla-config.h" #include "nsIGenericFactory.h" #include "nsXPCOM.h" #include "nsIHelloWorld.h" // My generated IDL
#define nsHelloWorld_CID \
{0x777f7150, 0x4a2b, 0x4301, \
{0xad, 0x10, 0x5e, 0xab, 0x25, 0xb3, 0x22, 0xaa}}#define nsHelloWorld_ContractID "@svanleent/nsHelloWorld"
char *helloWorld = "Hello World!";
class nsHelloWorld : public nsIHelloWorld
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIHELLOWORLD
nsHelloWorld();private:
~nsHelloWorld();
};NS_IMPL_ISUPPORTS1(nsHelloWorld, nsIHelloWorld)
nsHelloWorld::nsHelloWorld()
{
/* member initializers and constructor code */
}nsHelloWorld::~nsHelloWorld()
{
/* destructor code */
}/* string GetHelloWorld (); */
NS_IMETHODIMP nsHelloWorld::GetHelloWorld(char **_retval)
{
*_retval = helloWorld;
return NS_OK;
}/*!
* Register the components
*/
static NS_METHOD nsHelloWorldRegistration(nsIComponentManager *aCompMgr, nsIFile *path, const char *registryLocation, const char *componentType, const nsModuleComponentInfo *info) {
/* Initialize service */
return NS_OK; }
/*!
* Unregister the components
*/
static NS_METHOD nsHelloWorldUnregistration(nsIComponentManager *aCompMgr, nsIFile *path, const char *registryLocation, const nsModuleComponentInfo *info) {
/* Uninitialize service */
return NS_OK; }
NS_GENERIC_FACTORY_CONSTRUCTOR(nsHelloWorld)
static const nsModuleComponentInfo components[] = {
{
"nsHelloWorld",
nsHelloWorld_CID,
nsHelloWorld_ContractID,
nsHelloWorldConstructor,
nsHelloWorldRegistration,
nsHelloWorldUnregistration
}
};NS_IMPL_NSGETMODULE(nsHelloWorldModule, components) _______________________________________________ Mozilla-xpcom mailing list [email protected] http://mail.mozilla.org/listinfo/mozilla-xpcom
