c++ - Construire pour Windows NT 4.0 à l'aide de Visual Studio 2005?

Translate

Une application MFC que j'essaie de migrer utiliseafxext.h, qui cause_AFXDLLse mettre en place, ce qui provoque cette erreur si je règle/MT:

Veuillez utiliser le commutateur / MD pour les versions _AFXDLL

Mes recherches à ce jour indiquent qu'il est impossible de construire une application à exécuter sous Windows NT 4.0 en utilisant Visual Studio (C ++, dans ce cas) 2005.

Est-ce vraiment vrai? Existe-t-il une solution de contournement disponible?

This question and all comments follow the "Attribution Required."

Toutes les réponses

Hugo Lee
Translate

Non, il existe de nombreuses applications construites avec VS2005 qui doivent prendre en charge Windows XP, 2000, NT, toute la pile. Le problème est que (par défaut) VS2005 souhaite utiliser des bibliothèques / exportations non présentes sur NT.

Voirce filpour un peu de fond.

Commencez ensuite à limiter vos dépendances via des macros de préprocesseur et à éviter les API qui ne sont pas prises en charge sur NT.

La source
Translate

Pour vous débarrasser de l'erreur _AFXDLL, avez-vous essayé de modifier les paramètres pour utiliser MFC comme bibliothèque statique au lieu d'une DLL? Ceci est similaire à ce que vous faites déjà en changeant les bibliothèques d'exécution en statiques au lieu de DLL.

La source
Translate

La solution de contournement consiste à corriger la DLL multithread.Instructions simples. Court résumé:

La DLL d'expédition 8.0 C Runtime Library (MSVCR80.DLL) ne prend pas en charge NT 4.0 SP6 pour une raison et une seule raison: quelqu'un chez Microsoft a ajouté un appel de fonction àGetLongPathNameWqui n'existe pas dans kernel32.dll sur NT 4.0.

CRTLIB.C Sur la ligne 577, il y a un appel àGetLongPathNameW. remplacez-le simplement par:ret = 0;utilisez uniquement cette version de MSVCR80.DLL sur NT 4.0.

Une fois que cela fonctionne, trouver une solution plus générique devrait être trivial.

La source
Translate

Bien que je ne connaisse pas afxext.h, je me demande ce qui le rend incompatible avec Windows NT4 ...

Cependant, pour répondre à la question d'origine: «Mes recherches à ce jour indiquent qu'il est impossible de créer une application pour exécution sur Windows NT 4.0 à l'aide de Visual Studio (C ++, dans ce cas) 2005.»

La réponse devrait être oui, surtout si l'application a été initialement écrite ou exécutée sur NT4! Avec la chose afxext.h de côté, cela devrait être un OUI facile.

L'autre chose avec laquelle je trouve des problèmes est la nature lâche dans laquelle les gens rejettent le terme NT. Certes, la plupart des gens considèrent «NT» comme Windows NT4, mais cela reste ambigu parce que «la plupart des gens» n'est pas égal à «tout le monde».

En réalité, le terme «NT» est égal à la série NT. La série NT est NT3, NT4, NT5 (2000, XP, 2003) et NT6 (Vista).

Win32 est un sous-système sur lequel vous ciblez également votre code C / C ++. Je ne vois donc aucune raison pour laquelle on ne devrait pas pouvoir cibler cette plate-forme et ce sous-système NT4 ou, s'il s'agit d'un exercice de portage de plate-forme, supprimer les dépendances MFC que VC est peut-être en train d'imposer.

L'ajout de afxext.h au mixage me semble être un problème de compatibilité de sous-système. Cela fait partie de MFC de mes recherches Google. L'afxext.h semble être les extensions MFC (Microsoft Foundation Class).

Pouvez-vous supprimer votre dépendance sur MFC? De quel type d'application s'agit-il? (CLR, service, interface GUI?) Pouvez-vous convertir un projet en projet C ++ non géré dans VC 8.0?

J'espère que cela vous aidera.

La source
Maxwell Lee
Translate

L'idée est que l'exe est nécessaire pour se lier à la bibliothèque statique.

Veuillez essayer ceci «Propriétés de configuration», «Général», «Utilisation de MFC» pour «Utiliser MFC dans une bibliothèque statique» «Propriétés de configuration», «Général», «Utilisation d'ATL» vers «Lien statique vers ATL»

"Propriétés de configuration", "C \ C ++", "Génération de code", "Bibliothèque d'exécution" à "Multithread (\ MT)"

Machine de construction de plate-forme de test: Visual Studio 2005 sur la machine cliente Windows XP SP2: Windows XP SP2 (aucun VS2005 installé)

La source