c++ mfc linker visual-studio-2013 visual-studio-6

c++ - Enlazador: no se puede abrir el archivo ''nafxcwd.lib''



mfc linker (4)

Tengo problemas para compilar mi proyecto a través de visual studio 2013. Recibí este error de vinculador:

LINK : fatal error LNK1104: cannot open file ''nafxcwd.lib''

Según esta page , debo usar MFC en la biblioteca compartida. Pero no uso MFC en absoluto.
Todas mis bibliotecas y mi proyecto principal se compilaron utilizando la configuración de las Use Standard Windows Libraries . Este problema se produce solo cuando intento crear un proyecto a través de la cadena de herramientas Visual Studio 2013, pero se construyó con éxito con la cadena de herramientas Visual Studio 2010.

El proyecto PS se ha movido de Visual Studio 6.0 a Visual Studio 2013.


Al actualizar un proyecto VS 2008 que no usaba MFC, enfrenté el mismo problema y lo arreglé siguiendo estos tres pasos. Por favor, vea la foto para tener un vistazo a las propiedades del proyecto (VS 2008) resaltadas.

Paso 1

Agregue esta línea #define _AFXDLL en su archivo stdafx.h

#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #define _AFXDLL

Paso 2

Vaya a su solución VS 2013 y abra "Propiedades del proyecto -> C / C ++ -> Generación de código -> Biblioteca en tiempo de ejecución" y cambie el valor a DLL de depuración de múltiples hilos (/ MDd) (ajuste la configuración de la versión a DLL de múltiples hilos ( / MD) , una vez que complete estos dos pasos, comenzará a recibir este error de vinculación

error LNK1104: no se puede abrir el archivo ''mfc120d.lib''

Ahora, aquí tiene que configurar el "Conjunto de caracteres" para su proyecto en Unicode en lugar de _MBCS

Paso 3

Ahora abra "Propiedades del proyecto -> General -> Valores predeterminados del proyecto -> Conjunto de caracteres" y cambie el valor para usar el Conjunto de caracteres Unicode , ahora esta parte requiere un poco más de paciencia y trabajo, tiene que cambiar los rasgos de cadena a wchar_t o TCHAR en sus archivos de origen.

Espero que resuelva tu problema.


Para aislar al culpable que consume MFC, vincule con / VERBOSE y busque la salida para nafxcwd. Lo más probable es que aparezca después de una directiva / DEFAULTLIB; simplemente observe qué biblioteca se cargó exactamente antes de la directiva.


Parece que en Microsoft Visual C ++ 6.0 Standard Edition no se admite la vinculación estática con las bibliotecas MFC como dice la página de Microsoft. Pero en Visual Studio 2013 puedes vincular estadísticamente con las bibliotecas de Microsoft. Consulte este enlace https://support.microsoft.com/en-us/kb/243458 para resolver su problema.

Desde el sitio de Microsoft:

Para cambiar la configuración de su proyecto MFC para vincular dinámicamente a las bibliotecas de MFC, realice los siguientes pasos: Abra su proyecto MFC.

  1. En el menú Proyecto, haga clic en Configuración.
  2. En el cuadro de configuración de Combo, seleccione Todas las configuraciones. Haga clic en la pestaña General. Si no está visible, use los botones de desplazamiento de la pestaña para desplazarse hacia la izquierda.
  3. En el cuadro combinado de Microsoft Foundation Classes, seleccione Usar MFC en una DLL compartida. Haga clic en Aceptar para guardar los cambios.

Tuve el mismo problema, excepto que se compiló en una máquina pero no en otra. Resuelto mediante la instalación de la Biblioteca MFC Multibyte para Visual Studio 2013 como se sugiere en: MBCS Error al generar el proyecto MFC C ++ con Visual Studio