0
votes

In my project it is crucial I use __stdcall. However, I get this:

1>ExchangeParser.obj : error LNK2001: unresolved external symbol "public: static void __cdecl xercesc_3_0::XMLString::release(unsigned short * *,class xercesc_3_0::MemoryManager * const)" (?release@XMLString@xercesc_3_0@@SAXPEAPEAGQEAVMemoryManager@2@@Z) 1>ExchangeParser.obj : error LNK2001: unresolved external symbol "public: static char * __cdecl xercesc_3_0::XMLString::transcode(unsigned short const * const,class xercesc_3_0::MemoryManager * const)" (?transcode@XMLString@xercesc_3_0@@SAPEADQEBGQEAVMemoryManager@2@@Z) 1>ExchangeParser.obj : error LNK2001: unresolved external symbol "public: static unsigned short * __cdecl xercesc_3_0::XMLString::transcode(char const * const,class xercesc_3_0::MemoryManager * const)" (?transcode@XMLString@xercesc_3_0@@SAPEAGQEBDQEAVMemoryManager@2@@Z) 1>ExchangeParser.obj : error LNK2001: unresolved external symbol "public: static char const * const xercesc_3_0::XMLUni::fgXercescDefaultLocale" (?fgXercescDefaultLocale@XMLUni@xercesc_3_0@@2QBDB) 1>ExchangeParser.obj : error LNK2001: unresolved external symbol "public: static class xercesc_3_0::MemoryManager * xercesc_3_0::XMLPlatformUtils::fgMemoryManager" (?fgMemoryManager@XMLPlatformUtils@xercesc_3_0@@2PEAVMemoryManager@2@EA) 1>ExchangeParser.obj : error LNK2001: unresolved external symbol "public: static class xercesc_3_0::DOMImplementation * __cdecl xercesc_3_0::DOMImplementationRegistry::getDOMImplementation(unsigned short const *)" (?getDOMImplementation@DOMImplementationRegistry@xercesc_3_0@@SAPEAVDOMImplementation@2@PEBG@Z) 1>ExchangeParser.obj : error LNK2001: unresolved external symbol "public: static unsigned short const * const xercesc_3_0::XMLUni::fgDOMWRTFormatPrettyPrint" (?fgDOMWRTFormatPrettyPrint@XMLUni@xercesc_3_0@@2QBGB) 1>ExchangeParser.obj : error LNK2001: unresolved external symbol "public: static unsigned short const * const xercesc_3_0::XMLUni::fgDOMXMLDeclaration" (?fgDOMXMLDeclaration@XMLUni@xercesc_3_0@@2QBGB)

Any help?

1
What is your OS? __stdcall is for win32 API see stackoverflow.com/questions/297654/what-is-stdcallEdChum

1 Answers

0
votes

Xerces is open source, so why not just compile your own variant that uses __stdcall as the default convention, then you won't have the linkage errors.

It even comes with projects for every Windows IDE (including MSVC, which it appears you are using), so its merely a matter of loading it up, change one global option and hitting compile (you may need to change some places where __cdecl must be explicitly used, but the compiler will error on these locations when you build it).