Pregunta

Una aplicación MFC que estoy tratando de migrar utiliza afxext.h, que hace que _AFXDLL para obtener un conjunto, lo que provoca este error si me puse /MT:

Por favor, utilice el /MD interruptor para _AFXDLL construye

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

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

No hay solución correcta

Otros consejos

No, hay muchas aplicaciones construidas con VS2005 que tiene que soportar Windows XP, 2000, NT, toda la pila.El problema es que (por defecto) VS2005 quiere usar la biblioteca/exportaciones no presente en el NT.

Ver este hilo para algunos antecedentes.

A continuación, iniciar la limitación de sus dependencias a través de macros del preprocesador, y evitando la Api que no son compatibles en el NT.

Para deshacerse de la _AFXDLL error, he intentado cambiar la configuración para utilizar MFC como una estática lib en lugar de un archivo DLL?Esto es similar a lo que ya estás haciendo en cambiar el tiempo de ejecución de las bibliotecas estáticas en lugar de DLL.

La solución es arreglar el DLL multiproceso. Instrucciones simples.Breve resumen:

El envío 8.0 C Runtime Library DLL (MSVCR80.DLL no admite NT 4.0 SP6 por una razón y una razón solamente:alguien en Microsoft añade una llamada a una función para GetLongPathNameW que no existe en kernel32.dll en windows NT 4.0.

CRTLIB.C En la línea 577, hay una llamada a GetLongPathNameW.simplemente reemplazarlo con: ret = 0; sólo el uso de esta compilación de MSVCR80.DLL en windows NT 4.0.

Una vez que los tenemos de trabajo, viniendo para arriba con una solución más genérica debe ser trivial.

Aunque no estoy familiarizado con afxext.h, me pregunto acerca de lo que se 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 con Visual Studio (C++, en este caso) de 2005."

La respuesta debe ser sí, especialmente si la aplicación fue originalmente escrito o en ejecución en NT4!Con el afxext.h cosa aparte, esto debe ser una fácil SÍ.

La otra cosa que me estoy encontrando problemas con la suelta de la naturaleza en la que la gente se deshace de la NT plazo.Concedido mayoría de la gente piensa 'NT' como Windows NT4, pero es todavía ambiguo, ya que "la mayoría de la gente' no es igual a 'todas las personas'.

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

Win32 es un subsistema que el destino de su C/C++ de código demasiado.Así que no veo ninguna razón por la que no se debe ser capaz de orientar este NT4 plataforma y subsistema o, si se trata de una plataforma de portabilidad ejercicio, quitar el MFC dependencias que VC es posiblemente la imposición.

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

Puede eliminar su dependencia de las MFC?¿Qué tipo de aplicación es esto?(CLR, el servicio, la interfaz gráfica de usuario?) Se puede convertir el proyecto en una no administrado proyecto de C++ en VC 8.0?

Esperemos que algo de esto le ayudará a lo largo.

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

Por favor, intente esto "Propiedades de configuración", "General", "el Uso de MFC" a "Uso de MFC en una Biblioteca Estática" "Propiedades de configuración", "General", "el Uso de ATL" a "Enlace Estático a ATL"

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

Plataforma De Pruebas Construir La Máquina:Visual Studio 2005 en windows XP SP2 Máquina Del Cliente:Window XP SP2 (no VS2005 instalado)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top