Tuve el mismo problema y ninguna de las soluciones funcionó. El problema que ha escrito en OP venía de la clase que incluye:
class AFX_EXT_CLASS CMyClass : public CObject
{
public :
// ....
}
Esta era una clase de exportación desde un DLL que quiero usar en un exe consola. Si creo la aplicación de la consola como 'using mfc' en el asistente de creación, entonces este error no estaba ocurriendo, pero esa opción da como resultado la creación de una estructura diferente de la aplicación.
De todos modos traté de incluir varios encabezados para que sepa AFX_EXT_CLASS
, lo definió pero no funcionó. Para resumir, la solución es que tenemos que habilitar el uso de MFC para la aplicación para que entienda la clase exportada de MFC desde el dll. Como lo hacemos es mediante la edición del archivo y .vcproj
insertar la línea UseOfMFC="2"
como se muestra a continuación:
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="2" <-------------Insert this line here
CharacterSet="1"
también #include <afx.h>
a StdAfx.h (lo incluí en la parte superior derecha antes del primer incluyen).
Ahora recargar, limpiar y construir el error debería desaparecer.
No había otra manera de cambiar esta opción de la configuración del proyecto. Esta opción es diferente de Propiedades del proyecto >> Propiedades de configuración >> General >> 'Uso de MFC'.
actualización
El UseOfMFC="2"
truco que puede resultar útil en otros lugares, pero al parecer si sólo #include <afx.h>
y cambiar la configuración project properties >> General >> 'Use of MFC'
utilizar MFC en DLL compartida, que este error desaparece. Si no cambia los ajustes posteriores un error de compilación se producirá
c:\program files (x86)\microsoft visual studio 8\vc\atlmfc\include\afx.h(24) : fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
Cambiar esta realidad tampoco establece UseOfMFC="2"
en el archivo de proyecto, por lo que este es el camino correcto.
Tenía el mismo problema, eso lo solucionó . –