¿Construir para Windows NT 4.0 usando Visual Studio 2005?

votos
17

Una aplicación MFC que estoy intentando migrar utiliza afxext.h, lo que hace _AFXDLLque se configure, lo que causa este error si configuro /MT:

Utilice el modificador / MD para compilaciones _AFXDLL

Mi investigación hasta la fecha indica que es imposible construir una aplicación para ejecución en Windows NT 4.0 usando Visual Studio (C ++, en este caso) 2005.

¿Es esto realmente cierto? ¿Hay alguna solución disponible?

Publicado el 03/08/2008 a las 03:48
fuente por usuario
En otros idiomas...                            


5 respuestas

votos
8

No, hay muchas aplicaciones compiladas con VS2005 que deben ser compatibles con Windows XP, 2000, NT, toda la pila. El problema es que (de forma predeterminada) VS2005 quiere usar bibliotecas / exportaciones no presentes en NT.

Vea este hilo para un poco de fondo.

Luego, comience a limitar sus dependencias a través de las macros del preprocesador y evite las API que no son compatibles con NT.

Respondida el 03/08/2008 a las 17:54
fuente por usuario

votos
4

Para deshacerse del error _AFXDLL, ¿ha intentado cambiar la configuración para usar MFC como una lib estática en lugar de una DLL? Esto es similar a lo que ya está haciendo al cambiar las bibliotecas de tiempo de ejecución a static en lugar de DLL.

Respondida el 23/08/2008 a las 02:16
fuente por usuario

votos
3

La solución alternativa es arreglar el DLL multihilo. Las instrucciones simples . Breve resumen:

La DLL de biblioteca de tiempo de ejecución 8.0 C (MSVCR80.DLL) no admite NT 4.0 SP6 por una razón y solo una: alguien en Microsoft agregó una llamada de función a la GetLongPathNameWque no existe en kernel32.dll en NT 4.0.

CRTLIB.C En la línea 577, hay una llamada a GetLongPathNameW. simplemente reemplácelo con: ret = 0; solo use esta compilación de MSVCR80.DLL en NT 4.0.

Una vez que tenga a los que trabajan, proponer una solución más genérica debería ser trivial.

Respondida el 14/10/2008 a las 13:32
fuente por usuario

votos
1

Aunque no estoy familiarizado con afxext.h, me pregunto qué pasa si lo hace incompatible con Windows NT4 ....

Sin embargo, para responder a la pregunta original: "Mi investigación hasta la fecha indica que es imposible construir una aplicación para su ejecución en Windows NT 4.0 utilizando Visual Studio (C ++, en este caso) 2005".

La respuesta debería ser sí, especialmente si la aplicación se escribió originalmente o se ejecuta en NT4. Con la cosa afxext.h a un lado, esto debería ser un SÍ fácil.

La otra cosa con la que estoy teniendo problemas es la naturaleza despreocupada en la que las personas están desechando el término NT. De acuerdo, la mayoría de la gente piensa en 'NT' como Windows NT4 pero sigue siendo ambiguo porque 'la mayoría de las personas' no es igual a 'todas las personas'.

En realidad, el término 'NT' es igual a la serie NT. La serie NT es NT3, NT4, NT5 (2000, XP, 2003) y NT6 (Vista).

Win32 es un subsistema que también se dirige a su código C / C ++. Así que no veo ninguna razón por la que uno no deba ser capaz de apuntar a esta plataforma y subsistema NT4 o, si esto es un ejercicio de portar plataforma, elimine las dependencias MFC que VC posiblemente imponga.

Agregando el afxext.h a la mezcla, me suena como un problema de compatibilidad del subsistema. Es parte de MFC de mi investigación de Google. El afxext.h parece ser las extensiones de MFC (Microsoft Foundation Class).

¿Puedes eliminar tu dependencia de MFC? ¿Qué tipo de aplicación es esta? (CLR, servicio, interfaz GUI?) ¿Se puede convertir proyecto en un proyecto C ++ no administrado en VC 8.0?

Con suerte, algo de esto te ayudará.

Respondida el 18/09/2008 a las 17:18
fuente por usuario

votos
-1

La idea es que el exe es necesario para vincular a la biblioteca estática.

Pruebe "Propiedades de configuración", "General", "Uso de MFC" para "Usar MFC en una biblioteca estática" "Propiedades de configuración", "General", "Uso de ATL" para "Enlace estático a ATL"

"Propiedades de configuración", "C \ C ++", "Generación de código", "Biblioteca de tiempo de ejecución" a "Multi-Threaded (\ MT)"

Máquina de compilación de plataformas de prueba: Visual Studio 2005 en Windows XP SP2 Cliente Máquina: Window XP SP2 (no VS2005 instalado)

Respondida el 21/11/2008 a las 00:04
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more