¿Construir para Windows NT 4.0 usando Visual Studio 2005? -- ++ campo con visual-studio campo con compatibility campo con windows-nt camp Relacionados El problema

Build for Windows NT 4.0 using Visual Studio 2005?


22
vote

problema

Español

Una aplicación de MFC que estoy tratando de migrar usos afxext.h , que causa 9988777664 para configurar, lo que causa este error si configuro /MT5 :

Utilice el interruptor / MD para _Afxdll Builds

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

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

Original en ingles

An MFC application that I'm trying to migrate uses afxext.h, which causes _AFXDLL to get set, which causes this error if I set /MT:

Please use the /MD switch for _AFXDLL builds

My research to date indicates that it is impossible to build an application for execution on Windows NT 4.0 using Visual Studio (C++, in this case) 2005.

Is this really true? Are there any workaround available?

</div
           
 
 

Lista de respuestas

9
 
vote

No, hay muchas aplicaciones construidas con VS2005 que tienen que admitir Windows XP, 2000, NT, toda la pila. El problema es que (de forma predeterminada) VS2005 desea utilizar las bibliotecas / exportaciones que no están presentes en NT.

Consulte este hilo Por algún fondo.

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

 

No, there are many applications built with VS2005 that have to support Windows XP, 2000, NT, the whole stack. The issue is that (by default) VS2005 wants to use libraries/exports not present on NT.

See this thread for some background.

Then start limiting your dependencies via preprocessor macros, and avoiding APIs which aren't supported on NT.

</div
 
 
 
 
4
 
vote

Para deshacerse del error _Afxdll, ¿ha intentado cambiar a la configuración para usar MFC como un LIB estático en lugar de una DLL? Esto es similar a lo que ya está haciendo para cambiar las LIBS de tiempo de ejecución a estática en lugar de DLL.

 

To get rid of the _AFXDLL error, have you tried changing to the settings to use MFC as a static lib instead of a DLL? This is similar to what you're already doing in changing the runtime libs to static instead of DLL.

</div
 
 
3
 
vote

La solución es para fijar la DLL multi-roscada. instrucciones simples . Resumen corto:

La biblioteca DLL (MSVCR80.dll) de envío de 8.0 C RUNNIME (MSVCR80.dll) no es compatible NT 4.0 SP6 por una razón y una sola razón: alguien en Microsoft agregó una función de llamada a GetLongPathNameW que 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; Utilice únicamente esta compilación de msvcr80.dll en NT 4.0.

Una vez que tenga aquellos que trabajan, creando una solución más genérica, debe ser trivial.

 

The workaround is to fix the multi-threaded DLL. Simple instructions. Short summary:

The shipping 8.0 C Runtime Library DLL (MSVCR80.DLL) does not support NT 4.0 SP6 for one reason and one reason only: someone at Microsoft added a function call to GetLongPathNameW which does not exist in kernel32.dll on NT 4.0.

CRTLIB.C On line 577, there is a call to GetLongPathNameW. simply replace it with: ret = 0; only use this build of MSVCR80.DLL on NT 4.0.

Once you've got those working, coming up with a more generic solution should be trivial.

</div
 
 
1
 
vote

Aunque no estoy familiarizado con afxext.h, me pregunto qué es lo que hace que sea incompatible con Windows NT4 ...

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

La respuesta debe ser sí, especialmente si la aplicación fue escrita originalmente o se ejecutó en NT4. Con el AFXEXT.H TUS AURANTE, ESTO DEBE SER UNA FÁCIL SÍ.

La otra cosa con la que estoy encontrando problemas es la naturaleza suelta en la que las personas están lanzando el término NT. Por supuesto, la mayoría de las personas piensan 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 pueda apuntar a esta plataforma NT4 y AMP; Subsistema O, si este es un ejercicio de portones de plataforma, elimine las dependencias de MFC que posiblemente se imponga VC.

Añadiendo 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 (Clase de Fundación Microsoft).

¿Puede eliminar su dependencia de MFC? ¿Qué tipo de aplicación es esta? (CLR, servicio, interfaz GUI?) ¿Puede convertir el proyecto a un proyecto C ++ no administrado en VC 8.0?

Esperemos que algunos de esto lo ayude.

 

Although I'm not familiar with afxext.h, I am wondering what about it makes it incompatible with Windows NT4....

However, to answer the original question: "My research to date indicates that it is impossible to build an application for execution on Windows NT 4.0 using Visual Studio (C++, in this case) 2005."

The answer should be yes especially if the application was originally written or running on NT4! With the afxext.h thing aside, this should be an easy YES.

The other thing I am finding trouble with is the loose nature in which people are throwing out the NT term. Granted most people think of 'NT' as Windows NT4 but it's still ambiguous because 'most people' is not equal to 'all people.'

In reality the term 'NT' is equal to the NT series. The NT series is NT3, NT4, NT5 (2000, XP, 2003) and NT6 (Vista).

Win32 is a subsystem which you target your C/C++ code too. So I see no reason why one should not be able target this NT4 platform & subsystem or, if this is a platform porting excercise, remove the MFC dependencies that VC is possibly imposing.

Adding the afxext.h to the mix, it sounds to me like a subsystem compatibility issue. It's part of MFC from my Google research. The afxext.h appears to be the MFC (Microsoft Foundation Class) extensions.

Can you remove your dependency on MFC? What type of application is this? (CLR, service, GUI interface?) Can you convert project to an unmanaged C++ project in VC 8.0?

Hopefully some of this will help you along.

</div
 
 
-1
 
vote

La idea es que se necesita la EXE para vincularse a la biblioteca estática.

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

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

plataforma de prueba Build Machine: Visual Studio 2005 en la ventana XP SP2 Máquina cliente: ventana XP SP2 (no vs2005 instalada)

 

The idea is that the exe is needed to link to the static library.

Please try this "Configuration Properties", "General", "Use of MFC" to "Use MFC in a Static Library" "Configuration Properties", "General", "Use of ATL" to "Static Link to ATL"

"Configuration Properties", "CC++", "Code Generation", "Runtime Library" to "Multi-Threaded (MT)"

Test Platform Build Machine: Visual Studio 2005 on Window XP SP2 Client Machine: Window XP SP2 (no VS2005 installed)

</div
 
 

Relacionados problema

8  En C ++ / Windows ¿Cómo obtengo el nombre de la red de la computadora en la que estoy?  ( In c windows how do i get the network name of the computer im on ) 
En una aplicación de Ventanas C ++ (XP y NT, si hace una diferencia), estoy trabajando, necesito obtener el nombre de la red asociado con la computadora, el c...

22  ¿Construir para Windows NT 4.0 usando Visual Studio 2005?  ( Build for windows nt 4 0 using visual studio 2005 ) 
Una aplicación de MFC que estoy tratando de migrar usos afxext.h , que causa 9988777664 para configurar, lo que causa este error si configuro /MT5 : Ut...

0  Expresiones regulares en el kernel de Windows (NT)  ( Regular expressions in windows nt kernel ) 
¿Cuáles son mis opciones si quiero usar la expresión regular que coincide en un controlador de kernel de Windows NT que está escrito en C? No creo que Micro...

4  Ejecutando una aplicación J6SE en una caja NT  ( Running a j6se app on an nt box ) 
Necesito ejecutar una solicitud de Java, que estamos tratando de pagar a Java 6, en un cuadro NT. Logro para ejecutar Java 5 en él (aunque no es compatible ...

2  Dos procesos de lectura / escritura en el mismo archivo - Win32 usando la función LockFileEx ()  ( Two processes reading writing to the same file win32 using lockfileex functi ) 
Estoy escribiendo un servicio que creará un archivo y escribirá registros en él, otros procesos (hay cuatro procesos concurrentes) leerán un registro y modifi...

3  Depuración remota de una aplicación NT de XP con Visual Studio 6.0  ( Remote debugging an nt application from xp with visual studio 6 0 ) 
¿Es posible depurar remoto una aplicación Visual C ++ 6.0 que se ejecuta en una máquina de Windows NT de una estación de trabajo de desarrollador que ejecuta ...

0  ¿Cómo puedo instalar SSH2 en Windows_NT (servicio web de Azure) para conectar VM del servicio web?  ( How can i install ssh2 in windows nt azure web service to connect vm from web ) 
Para hacer que mi pregunta sea más clara, los estoy rompiendo en partes. He creado página web en Microsoft Azure usando App Service { http: //####.azureweb...

4  Createprocessasuser vs shellexecute  ( Createprocessasuser vs shellexecute ) 
Necesito ShellExecute Algo que otro usuario, actualmente comienzo un proceso de ayuda con CreateProcessAsUser que llama ShellExecute , pero eso también p...

4  nt! kewaitforsingleobject sin args  ( Ntkewaitforsingleobject without args ) 
Actualmente estoy tratando de depurar un punto muerto en el sistema y estoy teniendo dificultades para entender esto. Child-SP RetAddr :...

9  Autentificación de una instancia de SQL Server como usuario de Windows a través de JDBC  ( Authenticating to a sql server instance as a windows user via jdbc ) 
Tengo que admitir múltiples tipos de bases de datos para mi aplicación web habilitada para inquilinos. Entre otros, he apoyado con éxito el servidor SQL de Mi...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos