Article ID: 161589 - Last Review: October 16, 2002 - Revision: 1.0 DOC: AfxGetStaticModuleState() Causes Errors in an Extension DLLThis article was previously published under Q161589 SUMMARY
The Visual C++ version 4.1 MFC documentation indicates that MFC Extension DLLs need
to use the macro expression "AFX_MANAGE_STATE(AfxGetStaticModuleState());"
at the top of every exported DLL function. This is incorrect; MFC Extension
DLLs do not need to use this expression. This error was fixed in the documentation for Visual C++ version 4.2 and later versions of Visual C++. MORE INFORMATION
Under the subheading "Extension DLLs" of the article "Visual C++ Books ->
MFC 4.2 -> Programming with MFC:Encyclopedia - > Dynamic-Link Libraries
(DLLs) -> Dynamic-Link Libraries (DLLs)," the following text appears:
"If you have a resource in your DLL, such as a dialog, you need to use
the macro AFX_MANAGE_STATE to switch the MFC module state correctly, so
that Windows looks in the DLL and not in the EXE for the resource. This
can be done by adding the following line of code to the beginning of
functions exported from the DLL:
Any attempt to use AfxGetStaticModuleState( ) in an Extension DLL will result in possible run-time problems and the following linker errors: "mfcs40d.lib(dllmodul.obj) : error LNK2005: __pRawDllMain already defined in testdll1.obj mfcs40d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in testdll1.obj mfcs40d.lib(dllmodul.obj) : warning LNK4006: __pRawDllMain already defined in testdll1.obj; second definition ignored mfcs40d.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 already defined in testdll1.obj; second definition ignored" | Article Translations
|

Back to the top
