MFC + COM DLL, x64, VC++ 2005 SP1

EDN Admin

Well-known member
Joined
Aug 7, 2010
Messages
12,794
Location
In the Machine
The linker issues 4 error messages about unresolved symbols unless I put the following workaround in the source code of my MFC + COM DLL.  Is there a better way to do it?  Or if x64 symbols really lack decoration, is there some reason why VC++ 2005 SP1 didnt generate correct source code automatically?
// DllCanUnloadNow - Allows COM to unload DLL<br/>#ifndef _WIN32_WCE<br/>#if 0  // Microsofts code<br/>#pragma comment(linker, "/EXPORT:DllCanUnloadNow=_DllCanUnloadNow@0,PRIVATE")<br/>#pragma comment(linker, "/EXPORT:DllGetClassObject=_DllGetClassObject@12,PRIVATE")<br/>#pragma comment(linker, "/EXPORT:DllRegisterServer=_DllRegisterServer@0,PRIVATE")<br/>#pragma comment(linker, "/EXPORT:DllUnregisterServer=_DllUnregisterServer@0,PRIVATE")<br/>#else  // Diamonds workaround 2009.08.28<br/>#ifdef _WIN64<br/>#pragma comment(linker, "/EXPORT:DllCanUnloadNow=DllCanUnloadNow,PRIVATE")<br/>#pragma comment(linker, "/EXPORT:DllGetClassObject=DllGetClassObject,PRIVATE")<br/>#pragma comment(linker, "/EXPORT:DllRegisterServer=DllRegisterServer,PRIVATE")<br/>#pragma comment(linker, "/EXPORT:DllUnregisterServer=DllUnregisterServer,PRIVATE")<br/>#else<br/>#pragma comment(linker, "/EXPORT:DllCanUnloadNow=_DllCanUnloadNow@0,PRIVATE")<br/>#pragma comment(linker, "/EXPORT:DllGetClassObject=_DllGetClassObject@12,PRIVATE")<br/>#pragma comment(linker, "/EXPORT:DllRegisterServer=_DllRegisterServer@0,PRIVATE")<br/>#pragma comment(linker, "/EXPORT:DllUnregisterServer=_DllUnregisterServer@0,PRIVATE")<br/>#endif<br/>#endif // Diamonds workaround 2009.08.28<br/>#else<br/>#ifdef _X86_<br/>#pragma comment(linker, "/EXPORT:DllCanUnloadNow=_DllCanUnloadNow,PRIVATE")<br/>#pragma comment(linker, "/EXPORT:DllGetClassObject=_DllGetClassObject,PRIVATE")<br/>#pragma comment(linker, "/EXPORT:DllRegisterServer=_DllRegisterServer,PRIVATE")<br/>#pragma comment(linker, "/EXPORT:DllUnregisterServer=_DllUnregisterServer,PRIVATE")<br/>#else<br/>#pragma comment(linker, "/EXPORT:DllCanUnloadNow,PRIVATE")<br/>#pragma comment(linker, "/EXPORT:DllGetClassObject,PRIVATE")<br/>#pragma comment(linker, "/EXPORT:DllRegisterServer,PRIVATE")<br/>#pragma comment(linker, "/EXPORT:DllUnregisterServer,PRIVATE")<br/>#endif // _X86_<br/>#endif // !_WIN32_WCE

View the full article
 
Back
Top