Apologies if this gets double-posted

Examining the contents of xpcomglue.lib (using dumpbin /symbols ) I get the following

lInker: public: virtual unsigned int __thiscall nsCreateInstanceByContractID::operator()(struct nsID const &,void * *)const lib: public: virtual unsigned int __fastcall nsCreateInstanceByContractID::operator()(struct nsID const &,void * *)const

The calling conventions are different for the 'missing' functions, they are all marked as __fastcall when the library is built but somehow have a different calling convention applied...

once name mangling process is applied we get:

??RnsCreateInstanceByContractID@@UBEIABUnsID@@PAPAX@Z
??RnsCreateInstanceByContractID@@UBIIABUnsID@@PAPAX@Z

The cause is simple. In xpcom\base\nscore.h we have:

#elif defined(XP_WIN) && !defined(_WIN64)
#define NS_FASTCALL __fastcall
#define NS_CONSTRUCTOR_FASTCALL
...

Why is this defined only when XP_WIN is defined? A bug?

Thx

J.


_______________________________________________
dev-embedding mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-embedding

Reply via email to