Pregunta

He creado un programa en Microsoft Visual Studio 2005 y funciona bien.

El problema que estoy teniendo es que la máquina en la que debe usarse es ejecutar Windows 98. Por lo que puedo decir, necesito instalar la redistribuible para VC ++. ¿Puedo instalar el redistribuible en Windows 98 o hay alguna manera de hacer que funcione en Windows 98?

¿Fue útil?

Solución

Sí, las aplicaciones compiladas con VS 2005 funcionan perfectamente bien en Windows 98 y yo. He ejecutado varios de ellos yo mismo, y mantengo VS 2005 alrededor e instalado para este propósito precisamente. Versión 2005 del CRT redistribuible es compatible desde Windows 98.

El truco es que Debe compilar la aplicación para el conjunto de caracteres de múltiples bytes (MBCS). No funcionará cuando se compilará como Unicode, que es la configuración de proyecto predeterminada. Las plataformas de Windows 9x no admiten Unicode sin ayuda adicional. Debería poder cambiar la configuración del proyecto y estar bien, pero si ha escrito su código para asumir Unicode, tendrá un problema.

Es por eso que necesita usar tipos de caracteres genéricos y funciones definidas en tchar.h, en lugar de sus amplios equivalentes de carácter que se prefieren para las construcciones de Unicode. Siempre defina cadenas usando el TCHAR tipo (o LPTSTR o LPCTSTR tipos), que se define condicionalmente a wchar_t o char, según sea apropiado. Use funciones de manipulación de cadenas que comienzan con _tcs..., en lugar de los específicos de personajes amplios o estrechos. Asegúrese de que cuando llame a funciones, siempre llame a las versiones genéricas tipEft'ed, en lugar de las ANSI o de amplia especificación que terminan con un A o W sufijo.

Puede ser mucho trabajo volver y solucionar esto si no lo ha hecho desde el principio. Si ese es el caso, podría investigar el Capa de Microsoft para Unicode en los sistemas Windows 95/98/ME, que proporciona una capa de abstracción que le permite llamar a las funciones de Unicode en los sistemas operativos heredados de Windows 9X donde no son compatibles de forma nativa.

Más allá de Unicode/MBCS, lo único a tener en cuenta es que no está llamando a ninguna función que no existiera en las API Win32 en los Windows 98 días. No puede confiar en lo que la documentación de MSDN en línea le indica la "versión mínima compatible con el cliente", porque Microsoft ya no es compatible con Windows 98. Todos De los documentos de SDK dicen que la versión mínima compatible es Windows 2000 ahora, y usted sabe que no es correcto. Toda la API no se introdujo tan tarde como W2K. Para obtener información precisa, deberá obtener una versión anterior de la documentación SDK; Lo que vino con su instalación de VS 2005 debería estar bien. La información allí se remonta al menos en cuanto a Win 98, si no 95 (no recuerdo exactamente).

Para casos en los que desea llamar a funciones que no existieran en Windows 98 cuando se ejecuta en sistemas más nuevos donde ellos son Disponible, deberá tener más cuidado para llamarlos dinamicamente, en lugar de agregarlos a la tabla de importación DLL de su aplicación (lo que el enlazador generalmente hace por usted automáticamente). Eso significa definir la función conlo, y usar el LoadLibrary y GetProcAddress funciones para llamarlos. No es divertido, pero lo hace trabajar.

Alternativamente, puede configurar el enlazador para "retrasar la carga" de las bibliotecas (verifique las propiedades de su proyecto). Esto es mucho más conveniente, pero obviamente necesitará asegurarse de que solamente Llame a las funciones que están disponibles en su sistema operativo objetivo, de lo contrario, la aplicación se bloqueará.

De cualquier manera, el GetVersionEx función Le dirá todo lo que necesita saber sobre el sistema operativo actual del host para que su código pueda tomar diferentes rutas (llamando a las funciones más nuevas si están disponibles o volver a caer a las más antiguas si no) dependiendo del entorno. Esto le permite apoyar una nueva funcionalidad en nuevos sistemas, al tiempo que conserva cualquier grado de soporte para los sistemas operativos heredados es apropiado. Encontrarás mucho if declaraciones en la base de código cuando esto se hace bien. :-)

Otros consejos

Sí tu puedes http://www.microsoft.com/download/en/details.aspx?id=3387 (Paquete redistribuible de Microsoft Visual C ++ 2005 (x86))

Sistemas operativos compatibles: Windows 2000 Service Pack 3, Windows 98, Windows 98 Second Edition, Windows ME, Windows Server 2003, Windows XP Service Pack 2

¿Verificó los requisitos del sistema? De acuerdo a este enlace, Windows 98 debería estar bien.

Hay más que distribuir CRT con su aplicación. Todas las funciones que usa en el programa debe estar disponible en Windows98. Para todas las funciones que encuentre en MSDN, encontrará un "cliente mínimo compatible". Esto es complicado ...
Para superar el problema de CRT, puede vincular estáticamente la aplicación (/opción de enlazador MT). Resultará en un binario más grande pero funcionará.

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