Question

J'ai construit un programme dans Microsoft Visual Studio 2005 et il fonctionne très bien.

Le problème que j'ai est la machine, il doit être utilisé est en cours d'exécution 98. fenêtres autant que je peux dire que je dois installer le redistribuable pour vc ++. Puis-je installer le redistribuable sur Windows 98 ou est-il un moyen de le faire fonctionner sur Windows 98?

Était-ce utile?

La solution

Oui, les applications compilées avec le travail VS 2005 parfaitement bien sur Windows 98 et Me. J'ai couru plusieurs d'entre eux moi-même, et de garder VS 2005 autour et installé précisément à cette fin. Version 2005 du redistribuable CRT est pris en charge aussi loin que Windows 98.

L'astuce est que vous devez compiler l'application pour le jeu de caractères multi-octets (MBCS) . Il ne fonctionne pas lorsqu'il est compilé en Unicode, qui est le paramètre par défaut du projet. les plates-formes Windows 9x ne prennent pas en charge Unicode sans une aide supplémentaire. Vous devriez être en mesure de modifier les paramètres du projet et être très bien, mais si vous avez écrit votre code pour prendre Unicode, alors vous aurez un problème.

Ceci est la raison pour laquelle vous avez besoin d'utiliser des types de caractères génériques et fonctions définies dans tchar.h, plutôt que leurs équivalents larges de caractères qui sont préférés pour Unicode construit. Toujours définir les chaînes utilisant le type de TCHAR (ou LPTSTR ou types LPCTSTR), qui est conditionnellement définie à wchar_t ou char, selon le cas. Utilisez les fonctions de manipulation de chaînes qui commencent par _tcs..., plutôt que celles qui sont spécifiques pour ou codent des caractères étroits. Assurez-vous que lorsque vous appelez des fonctions, vous appelez toujours les versions génériques typedef, plutôt que ceux ou ANSI- large spécifiques qui se terminent par un A ou un suffixe W.

Il peut être beaucoup de travail pour revenir en arrière et corriger cela si vous ne l'avez pas fait depuis le début. Si tel est le cas, vous pouvez regarder dans le Microsoft couche pour Unicode sous Windows 95/98 / ME systèmes , qui fournit une couche d'abstraction qui vous permet d'appeler des fonctions Unicode sur les anciens systèmes d'exploitation Windows 9x où ils ne sont pas nativement pris en charge.

Au-delà Unicode / MBCS, la seule chose à surveiller est que vous n'êtes pas appeler toutes les fonctions qui n'existaient pas dans le dos de façon API Win32 dans Windows 98 jours. Vous ne pouvez pas faire confiance ce que la documentation MSDN en ligne, vous indique la « version client minimale prise en charge » plus, parce que Microsoft n'est plus prenant en charge Windows 98. Tous du SDK docs dire que la version minimale est windows 2000 maintenant, et vous savez que ce n'est pas correct. L'API ensemble n'a pas été introduit aussi tard que W2K. Afin d'obtenir des informations précises, vous aurez besoin d'obtenir une ancienne version de la documentation du SDK; ce qui est venu avec l'installation de VS 2005 devrait être bien. L'information y remonte au moins aussi loin que Win 98, sinon 95 (je ne me souviens pas exactement).

Pour les cas où vous voulez appeler les fonctions qui n'existaient pas dans Windows 98 lorsque vous êtes en cours d'exécution sur les systèmes plus récents où ils sont disponibles, vous aurez besoin de prendre des précautions supplémentaires à l'appel les dynamiquement , plutôt que de les ajouter à la table d'importation DLL de votre application (ce que l'éditeur de liens pour vous le fait généralement automatiquement). Cela signifie que la définition des pointeurs de fonction vous-même, et en utilisant le LoadLibrary et les fonctions de GetProcAddress les appeler. Ce n'est pas amusant, mais fait travail.

Vous pouvez configurer l'éditeur de liens « charge de retard » les bibliothèques (vérifier les propriétés de votre projet). Ceci est beaucoup plus pratique, mais il est évident que vous devrez vous assurer que vous uniquement appeler les fonctions qui sont disponibles sur votre système d'exploitation cible, sinon l'application plantera.

De toute façon, la fonction GetVersionEx vous dira tout ce que vous besoin de savoir sur le ope hôte actuelsystème de notation afin que votre code peut prendre des chemins différents (l'appel de fonctions nouvelles si elles sont disponibles, ou de retomber à ceux âgés sinon) en fonction de l'environnement. Cela vous permet de soutenir de nouvelles fonctionnalités sur les nouveaux systèmes, tout en conservant quelque degré de soutien des systèmes d'exploitation existants est appropriée. Vous trouverez beaucoup de déclarations de if dans la base de code lorsque cela est fait. : -)

Autres conseils

Oui, vous pouvez http://www.microsoft.com/ download / fr / Details.aspx? id = 3387 (Microsoft Visual C ++ 2005 Redistributable package (x86))

Systèmes d'exploitation supportés: Windows 2000 Service Pack 3, Windows 98 , Windows 98 Deuxième Édition, Windows ME, Windows Server 2003, Windows XP Service Pack 2

Avez-vous vérifié la configuration système requise? Selon ce lien , Windows 98 doit être bien.

Il y a plus de distribuer CRT avec votre application. Toutes les fonctions que vous utilisez dans le programme doivent être disponibles dans Windows98. Pour toutes les fonctions que vous trouverez sur MSDN, vous trouverez un « client pris en charge minimum ». C'est délicat ...
Pour obtenir plus de problème, vous pouvez CRT statiquement lier l'application (/ MT option de liaison). Entraînera une plus binaire, mais fonctionne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top