---------------------------
firefox.exe - Entry Point Not Found
---------------------------
The procedure entry point ??RnsQueryInterface@@UBEIABUnsID@@PAPAX@Z could
not be located in the dynamic link library xpcom.dll.
---------------------------
OK
---------------------------
By examining my dll (plugin) I can see that it exports:
??RnsQueryInterface@@QBEIABUnsID@@PAPAX@Z (it differes in only 1 letter).
Well, I got the above error only somethimes (not allways). Somethimes linker
links my dll OK, somethimes don't. I'm still searching for the pattern.
I hope you (more expirienced) guys could tell me where to start looking and
what to pay attention.
I have asked this question on Mozilla/Firefox mailing lists, but without
answer.
I would expect the different letter (Q vs. U) to be a result of a different declaration. Firefox.exe is expecting something, and you are declaring something else.
I would use undname.exe (un-decorate name) to translate ??RnsQueryInterface@@UBEIABUnsID@@PAPAX@Z to something I can compare with my declaration.
Hope this helps.
Thanks,
George Mileka
VC++ Libraries Team
This posting is provided "AS IS" with no warranties, and confer no rights.
The output from undname.exe is:
??RnsQueryInterface@@UBEIABUnsID@@PAPAX@Z == public: virtual unsigned int
__thiscall nsQueryInterface::operator()(struct nsID const &,void * *)const
The other output is the same, just without "virtual" keyword. In Debug build
VC6 links (exports) wrong (bad) functions (calss member), but in Release
build VC6 links correctly exports.
What should I do?
This is class (and member function) declaration:
class NS_COM nsQueryInterface : public nsCOMPtr_helper
{
public:
nsQueryInterface( nsISupports* aRawPtr, nsresult* error )
: mRawPtr(aRawPtr),
mErrorPtr(error)
{
// nothing else to do here
}
virtual nsresult operator()( const nsIID& aIID, void** ) const;
private:
nsISupports* mRawPtr;
nsresult* mErrorPtr;
};