Construire pour Windows NT 4.0 en utilisant Visual Studio 2005?

Une application MFC que j'essaie de migrer utilise afxext.h , ce qui provoque la définition de _AFXDLL , ce qui provoque cette erreur si je mets / MT :

Veuillez utiliser le commutateur / MD pour les constructions _AFXDLL

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.

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

0
ajouté édité
Vues: 2
Pour mémoire, ArcGIS 10.0 est livré avec Python 2.6.5
ajouté l'auteur akdom, source
Quelqu'un s'il vous plaît protégez ça.
ajouté l'auteur Jonathan Mee, source
@Mike, j'ai un type de poste personnalisé de 'ressources' et ces postes ont plusieurs catégories différentes comme 'formulaires', 'mp3' etc. maintenant cette zone Ressources dans le site est sous une autre section (qui est une page avec boucle personnalisée pour ces messages personnalisés) qui s'appelle Explorer. ce que je veux réaliser est domain.com/Explore/Resources/Resource-Category/Resource-Name ou domian.com/explore/resources/forms/production-form-1. ma règle de réécriture actuelle (dans register_post_type ()) est 'rewrite' => array ('slug' => "explorer/resources", 'with_front' => false)
ajouté l'auteur Tom, source
@Mike, je viens de voir la correspondance dans la liste de diffusion sur les taxonomies, les messages personnalisés et les réécritures et votre suggestion de trac sur le nouveau contrôleur, je suppose que mon problème est similaire à ce qui est décrit ici, je vais devoir attendre plus récente, mise en œuvre plus en forme.
ajouté l'auteur Tom, source
J'ai un peu touché un mur avec cette approche et aussi quelque chose a été complètement chamboulé avec les règles de réécriture (n'a pas aidé à les annuler, les rincer ou les supprimer) alors j'ai changé pour un autre, mais je vais essayer de le recréer (avec les fichiers modèles nécessaires) et vous envoyer un e-mail sur l'adresse e-mail de la liste de diffusion. Merci.
ajouté l'auteur Tom, source
@Amit: Ce n'est pas clair ce que vous cherchez. Je ne suis pas sûr de ce que vous voulez dire quand vous dites "dynamiquement" obtenir le nom de catégorie des messages en quelque sorte ". Pouvez-vous s'il vous plaît expliquer plus en profondeur? Aussi, pouvez-vous s'il vous plaît nous dire ce que votre type de message personnalisé est et donner plusieurs exemples d'URL que vous aimeriez que votre système produise?
ajouté l'auteur MikeSchinkel, source
Je vais devoir faire quelques recherches sur celui-ci, en supposant que quelqu'un d'autre ne répond pas correctement avant que je le fasse.
ajouté l'auteur MikeSchinkel, source
Y a-t-il une chance que vous puissiez rendre votre base de données WordPress disponible pour que je puisse la charger et ne pas avoir à recréer vos données pour tester cela? Vous pouvez publier le fichier de vidage SQL en tant que gist privé sur gist.github.com ...
ajouté l'auteur MikeSchinkel, source

7 Réponses

Non, une version de Python par version d'ArcGIS. La raison en est simple: la majeure partie de la magie se produit dans une extension C (arcgisscripting). Les API C changent de version en version, et cette DLL ne va pas bien jouer dans d'autres versions de Python.

Cependant, chaque fois que le site principal Python.org publie un correctif de sécurité (2.6.X), ceux-ci sont compatibles et peuvent être installés.

16
ajouté

Nope. An Esri staff member says no in a forum reponse post:

ArcGIS 10 final sera livré avec une et une seule version de python. À   Avant la libération, nous avons 2.6.2. Très probablement pour 10 finale, nous aurons   2.6.5. Cela dit, ArcGIS 10 fonctionnera avec n'importe quelle version 2.6 de python. Alors disons 6 mois à partir de maintenant, nous avons sorti Python 2.6.6 mais   ArcGIS utilise seulement 2.6.5, vous pouvez installer en toute sécurité Python 2.6.6 et   ArcGIS fonctionnera bien. Notez que cette compatibilité ne fonctionne qu'avec un   version majeure de Python. En d'autres termes, ArcGIS 10 ne fonctionnera jamais avec   Python 2.7 ou Python 3.1 ou toute autre version majeure de python. Seulement   Python 2.6 est supporté.

10
ajouté
Eh bien, ça vaut le coup d'essayer.
ajouté l'auteur ESV, source
Gardez à l'esprit que le poste a 2 ans. Vous savez que ce qui était vrai il y a 2 ans et pour ArcGIS 10.0 n'est pas forcément toujours vrai pour ArcGIS 10.x dans le futur.
ajouté l'auteur Stephen Quan, source
ArcGIS 10.2.2 est toujours à Python 2.7.x. Cependant, la nouvelle application de bureau ArcGIS Pro (à paraître mi-2014) utilise Python 3.4 - et utilise le même environnement GP (boîtes à outils) que Desktop 10x. Les scripteurs ArcGIS devraient donc travailler sur leur code d'écriture de compétences compatible avec la version 2.7/3.4 - ce qui n'est pas si difficile.
ajouté l'auteur Curtis Price, source

I think it is important to make this Q&A cover not just ArcGIS Desktop 10.0, Python 2.7 and Python 3.1, but also to incorporate the latest versions of desktop products from the ArcGIS platform and the Python programming language.

Pour la prise en charge de Python dans les produits de bureau (actuellement) les plus récents de la plateforme ArcGIS, je pense que vous devriez considérer:

Si vous avez besoin d'utiliser Python en dehors d'ArcGIS Pro, téléchargez le   Configuration Python depuis My Esri. Cette installation va installer Python   3.4.1, toutes les exigences tierces requises par ArcGIS Pro et un fichier ArcGISPro.pth utilisé pour identifier tous les dossiers ArcGIS Pro   requis pour exécuter ArcPy.

Les outils de géotraitement ArcGIS for Desktop requièrent que Python 2.7.x et   Numérique Python 1.7.x sont installés. Si la configuration d'ArcGIS for Desktop   ne trouve ni Python 2.7.x ni Numerical Python (NumPy)   1.7.xinstallé sur l'ordinateur cible, Python 2.7.8 et Numerical Python 1.7.1 seront installés lors d'une installation complète de   ArcGIS 10.3.x.

3
ajouté

Je ne sais pas à propos d'arc10, mais dans toutes les versions d'ArcGIS 9, vous pouvez mettre à jour Python vers la dernière version avec quelques étapes simples . Il s'agit d'une configuration non prise en charge, voir article 31912 de la base de connaissances ESRI . Veuillez nous indiquer si cela fonctionne pour vous avec ArcGIS 10.

1
ajouté
Cela ne fonctionne que pour les versions de la même version major.minor (c'est-à-dire allant de la version 2.6.3 à la version 2.6.5 dans ArcGIS 10). Ce ABSOLUMENT NE FONCTIONNERA PAS FIABLEMENT en passant de 2.5.X à 2.6.X dans ArcGIS car il existe des incompatibilités binaires entre les API des versions Python. Si ça fonctionne, vous avez juste de la chance. Quelque chose de longue durée aura probablement une corruption de données subtiles et dangereuses au fil du temps.
ajouté l'auteur Paul, source
Je me félicite des exemples explicites/des démonstrations d'incompatibilités et/ou de corruption de données (honnêtement, je le fais vraiment). J'ai mis à jour les principales versions de Python depuis plusieurs années et je n'ai pas (encore) rencontré de problèmes significatifs. D'un autre côté, j'ai vu de jolies corruption de données importante d'arcgis . Donc, c'est un risque que je suis prêt à prendre, mais avec prudence et diligence raisonnable.
ajouté l'auteur Greg, source

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

La DLL d'exécution de la bibliothèque d'exécution 8.0 C (MSVCR80.DLL) ne prend pas en charge   NT 4.0 SP6 pour une raison et une seule raison: quelqu'un chez Microsoft   ajouté un appel de fonction à GetLongPathNameW qui 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 vous avez travaillé, trouver une solution plus générique devrait être trivial.

0
ajouté

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

0
ajouté

Bien que je ne sois pas familier avec afxext.h, je me demande ce qui 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 à l'origine ou en cours d'exécution sur NT4! Avec la chose afxext.h de côté, cela devrait être un OUI facile.

L'autre chose que je trouve troublante, c'est la nature vague dans laquelle les gens rejettent le terme NT. Certes, la plupart des gens pensent de 'NT' comme Windows NT4 mais c'est toujours 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 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.

En ajoutant l'afxext.h au mixage, cela me semble être un problème de compatibilité du sous-système. Cela fait partie de MFC de ma recherche Google. L'afxext.h semble être les extensions MFC (Microsoft Foundation Class).

Pouvez-vous supprimer votre dépendance sur MFC? Quel type d'application est-ce? (CLR, service, interface GUI?) Pouvez-vous convertir le projet en un projet C ++ non géré dans VC 8.0?

J'espère que cela vous aidera.

0
ajouté