2012. november 5., hétfő 19:58:08 UTC+1 időpontban adamdi...@gmail.com a 
következőt írta:
> I'm trying to get NS_InitXPCOM2 to work . I have linked against xulrunner 
> SDK's 10, 12, 13, 16 and 17. We also have other programs using 
> XRE_InitEmbedding2, but the point of failure is the same.
> 
> 
> 
> #include <stdio.h>
> 
> #include "nsIServiceManager.h"
> 
> #include "nsXPCOM.h"
> 
> #include "nsCOMPtr.h"
> 
> 
> 
> int main(int argc, char **argv)
> 
> {
> 
>     nsresult rv;
> 
> 
> 
>     nsCOMPtr<nsIServiceManager> servMan;
> 
> #if MOZ_MAJOR > 16
> 
>     rv = NS_InitXPCOM2(getter_AddRefs(servMan), nullptr, nullptr);
> 
> #else
> 
>     rv = NS_InitXPCOM2(getter_AddRefs(servMan), nsnull, nsnull);
> 
> #endif
> 
>     if (NS_FAILED(rv))
> 
>     {
> 
>         printf("NS_InitXPCOM2 failed . rv=%08x", (int) rv);
> 
>         return 1;
> 
>     }
> 
>     return 0;
> 
> }
> 
> 
> 
> 
> 
> adam@curry:~/proj/cf/engine/src$ gdb ./embed_test 
> 
> GNU gdb (GDB) 7.0.1-debian
> 
> Copyright (C) 2009 Free Software Foundation, Inc.
> 
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> 
> This is free software: you are free to change and redistribute it.
> 
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> 
> and "show warranty" for details.
> 
> This GDB was configured as "x86_64-linux-gnu".
> 
> For bug reporting instructions, please see:
> 
> <http://www.gnu.org/software/gdb/bugs/>...
> 
> Reading symbols from /home/adam/proj/cf/engine/src/embed_test...done.
> 
> (gdb) run
> 
> Starting program: /home/adam/proj/cf/engine/src/embed_test 
> 
> [Thread debugging using libthread_db enabled]
> 
> [New Thread 0x7fffeb690700 (LWP 11054)]
> 
> [New Thread 0x7fffeae8f700 (LWP 11055)]
> 
> 
> 
> Program received signal SIGSEGV, Segmentation fault.
> 
> 0x0000000000000000 in ?? ()
> 
> (gdb) bt
> 
> #0  0x0000000000000000 in ?? ()
> 
> #1  0x00007ffff322f613 in PL_DHashTableOperate (table=0x62bcd8, 
> 
>     key=0x7ffff3a9ccb0, op=PL_DHASH_LOOKUP)
> 
>     at 
> /builds/slave/rel-m-beta-xr-lnx64-bld/build/obj-firefox/xpcom/build/pldhash.cpp:576
> 
> #2  0x00007ffff32555df in nsTHashtable<nsBaseHashtableET<nsIDHashKey, 
> nsFactoryEntry*> >::GetEntry (this=<value optimized out>, aKey=<value 
> optimized out>)
> 
>     at ../../dist/include/nsTHashtable.h:148
> 
> #3  0x00007ffff32555f9 in nsBaseHashtable<nsIDHashKey, nsFactoryEntry*, 
> nsFactoryEntry*>::Get (this=<value optimized out>, aKey=<value optimized out>)
> 
>     at ../../dist/include/nsBaseHashtable.h:126
> 
> #4  0x00007ffff3256cf7 in nsComponentManagerImpl::RegisterCIDEntry (
> 
>     this=0x62bc70, aEntry=0x7ffff47ad0e0, aModule=0x656200)
> 
>     at 
> /builds/slave/rel-m-beta-xr-lnx64-bld/build/xpcom/components/nsComponentManager.cpp:423
> 
> #5  0x00007ffff3257b62 in nsComponentManagerImpl::RegisterModule (
> 
>     this=0x62bc70, aModule=0x7ffff45638f0, aFile=0x0)
> 
>     at 
> /builds/slave/rel-m-beta-xr-lnx64-bld/build/xpcom/components/nsComponentManager.cpp:397
> 
> #6  0x00007ffff3257ed9 in nsComponentManagerImpl::Init (this=0x62bc70)
> 
>     at 
> /builds/slave/rel-m-beta-xr-lnx64-bld/build/xpcom/components/nsComponentManager.cpp:347
> 
> #7  0x00007ffff32327f5 in NS_InitXPCOM2_P (result=0x7fffffffe260, 
> 
>     binDirectory=<value optimized out>, appFileLocationProvider=0x0)
> 
>     at 
> /builds/slave/rel-m-beta-xr-lnx64-bld/build/xpcom/build/nsXPComInit.cpp:466
> 
> #8  0x0000000000400a80 in main (argc=1, argv=0x7fffffffe378)
> 
>     at embed_test.cpp:13

Just link with:

`pkg-config --libs libxul` -Wl,--whole-archive -lmozglue -lmemory 
-Wl,--no-whole-archive

This solved the problem for me recently.
_______________________________________________
dev-embedding mailing list
dev-embedding@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-embedding

Reply via email to