Construire pour Windows NT 4.0 en utilisant Visual Studio 2005?

voix
17

Une application MFC que je suis en train de migrer des utilisations afxext.h, ce qui provoque _AFXDLLde se mettre, ce qui provoque cette erreur si je mets /MT:

S'il vous plaît utilisez le commutateur / MD pour _AFXDLL construit

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

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

Créé 03/08/2008 à 03:48
source utilisateur
Dans d'autres langues...                            


5 réponses

voix
8

Non, il existe de nombreuses applications construites avec VS2005 qui doivent prendre en charge Windows XP, 2000, NT, l'ensemble de la pile. Le problème est que (par défaut) VS2005 veut utiliser les bibliothèques / exportations ne sont pas présentes sur NT.

Voir ce fil pour un arrière - plan.

Ensuite, commencer à limiter vos dépendances via des macros préprocesseur, et en évitant les API qui ne sont pas pris en charge sur NT.

Créé 03/08/2008 à 17:54
source utilisateur

voix
4

Pour se débarrasser de l'erreur _AFXDLL, avez-vous essayé de changer les paramètres à utiliser MFC comme lib statique au lieu d'une DLL? Ceci est similaire à ce que vous faites déjà à changer l'environnement d'exécution libs statique au lieu de DLL.

Créé 23/08/2008 à 02:16
source utilisateur

voix
3

La solution consiste à fixer la DLL multi-thread. Des instructions simples . Court résumé:

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

CRTLIB.C en ligne 577, il y a un appel à GetLongPathNameW. simplement le remplacer par: ret = 0; utiliser uniquement cette version de Msvcr80.dll sur NT 4.0.

Une fois que vous avez ceux qui travaillent, venir avec une solution plus générique devrait être trivial.

Créé 14/10/2008 à 13:32
source utilisateur

voix
1

Bien que je ne suis pas au courant afxext.h, je me demande ce que ce sujet le rend incompatible avec Windows NT4 ....

Cependant, pour répondre à la question initiale: « Ma recherche à ce jour indique qu'il est impossible de construire une application pour l'exécution sur Windows NT 4.0 en utilisant Visual Studio (C ++, dans ce cas) 2005. »

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

L'autre chose que je trouve des problèmes avec la nature lâche dans lequel les gens jettent le terme NT. Accordé plupart des gens pensent « NT » comme Windows NT4, mais il est encore ambigu parce que « la plupart des gens » ne sont pas égal à « toutes les personnes ».

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 qui vous ciblez votre code C / C de trop. Donc, je ne vois aucune raison pour laquelle on ne devrait pas être en mesure cible cette plate-forme NT4 et sous-système ou, si cela est un excercise portage de la plate-forme, supprimer les dépendances MFC que VC est peut-être imposant.

Ajout du afxext.h au mélange, il me semble un problème de compatibilité du sous-système. Cela fait partie de MFC de mes recherches Google. Le afxext.h semble être les extensions MFC (Microsoft Foundation Class).

Pouvez-vous retirer votre dépendance à l'égard MFC? Quel type d'application est-ce? (CLR, le service, l'interface graphique?) Pouvez-vous convertir projet à un projet C ++ non managé dans VC 8.0?

Espérons que certains de cela, vous aider.

Créé 18/09/2008 à 17:18
source utilisateur

voix
-1

L'idée est que l'exe est nécessaire pour créer un lien vers la bibliothèque statique.

S'il vous plaît essayer « Propriétés de configuration », « Général », « Utilisation du MFC » à « Utiliser les MFC dans une bibliothèque statique » « Propriétés de configuration », « Général », « Utilisation d'ATL » à « Lien statique à ATL »

"Propriétés de configuration", "C \ C ++", "Génération de code", "Runtime Library" à "multithread (\ MT)"

Plate-forme de test machine de construction: Visual Studio 2005 sur Windows XP SP2 machine client: Windows XP SP2 (pas VS2005 installé)

Créé 21/11/2008 à 00:04
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more