Κατασκευάστηκε για τα Windows NT 4.0, χρησιμοποιώντας το Visual Studio 2005;

ψήφοι
17

Μια εφαρμογή MFC που προσπαθώ να μεταναστεύσουν χρήσεις afxext.h, η οποία προκαλεί _AFXDLLγια να δημιουργήσει, το οποίο προκαλεί αυτό το σφάλμα, αν μπορώ να ορίσω /MT:

Παρακαλούμε χρησιμοποιήστε το διακόπτη / MD για _AFXDLL χτίζει

Η έρευνά μου μέχρι σήμερα δείχνει ότι είναι αδύνατο να οικοδομήσουμε μια αίτηση για εκτέλεση στα Windows NT 4.0, χρησιμοποιώντας το Visual Studio (C ++, σε αυτή την περίπτωση) του 2005.

Είναι αυτό πραγματικά ισχύει; Υπάρχουν κάποια λύση διαθέσιμη;

Δημοσιεύθηκε 03/08/2008 στις 03:48
πηγή χρήστη
Σε άλλες γλώσσες...                            


5 απαντήσεις

ψήφοι
8

Όχι, υπάρχουν πολλές εφαρμογές που έχουν δημιουργηθεί με το VS2005 που έχουν την υποστήριξη των Windows XP, 2000, NT, το σύνολο της στοίβας. Το θέμα είναι ότι (από προεπιλογή) VS2005 θέλει να χρησιμοποιήσει τις βιβλιοθήκες / εξαγωγές που δεν υπάρχουν σε NT.

Δείτε αυτό το νήμα για κάποιο υπόβαθρο.

Στη συνέχεια, ξεκινήστε τον περιορισμό των εξαρτήσεων μέσω μακροεντολές προεπεξεργαστή, και αποφεύγοντας τα API που δεν υποστηρίζονται σε NT.

Απαντήθηκε 03/08/2008 στις 17:54
πηγή χρήστη

ψήφοι
4

Για να απαλλαγείτε από το λάθος _AFXDLL, έχετε δοκιμάσει την αλλαγή στις ρυθμίσεις για να χρησιμοποιήσετε MFC ως στατική lib αντί για ένα αρχείο DLL; Αυτό είναι παρόμοιο με αυτό που ήδη κάνουν στην αλλαγή των libs χρόνου εκτέλεσης σε στατικό αντί DLL.

Απαντήθηκε 23/08/2008 στις 02:16
πηγή χρήστη

ψήφοι
3

Η λύση είναι να καθορίσει το multi-threaded DLL. Απλές οδηγίες . Σύντομη περίληψη:

Η ναυτιλιακή 8.0 C Runtime Library DLL (msvcr80.dll) δεν υποστηρίζει NT 4.0 SP6 για ένα λόγο και μόνο ένας λόγος: κάποιος στη Microsoft πρόσθεσε μια κλήση συνάρτησης για GetLongPathNameWτο οποίο δεν υπάρχει στην kernel32.dll σε NT 4.0.

CRTLIB.C On line 577, υπάρχει μια κλήση σε GetLongPathNameW. απλά αντικαταστήστε το με: ret = 0; χρησιμοποιήστε μόνο αυτό το build του msvcr80.dll σε NT 4.0.

Μόλις έχετε αυτούς που εργάζονται, έρχονται με μια πιο γενική λύση θα πρέπει να είναι ασήμαντο.

Απαντήθηκε 14/10/2008 στις 13:32
πηγή χρήστη

ψήφοι
1

Αν και δεν είμαι εξοικειωμένος με afxext.h, αναρωτιέμαι τι γίνεται με αυτό το καθιστά συμβατό με τα Windows NT4 ....

Ωστόσο, η απάντηση στο αρχικό ερώτημα: «Η έρευνά μου μέχρι σήμερα δείχνει ότι είναι αδύνατο να οικοδομήσουμε μια αίτηση για εκτέλεση στα Windows NT 4.0, χρησιμοποιώντας το Visual Studio (C ++, σε αυτή την περίπτωση) του 2005.»

Η απάντηση πρέπει να είναι ναι ειδικά αν η εφαρμογή γράφτηκε αρχικά ή το τρέξιμο για NT4! Με την afxext.h πράγμα στην άκρη, αυτό θα πρέπει να είναι μια εύκολη ΝΑΙ.

Το άλλο πράγμα που έχω να βρουν το πρόβλημα με το χαλαρό χαρακτήρα με τον οποίο οι άνθρωποι ρίχνουν έξω τον όρο ΝΤ. Σύμφωνοι οι περισσότεροι άνθρωποι σκέφτονται «ΝΤ», όπως τα Windows NT4, αλλά εξακολουθεί να είναι ασαφής, διότι «οι περισσότεροι άνθρωποι» δεν είναι ίσο με «όλους τους ανθρώπους.»

Στην πραγματικότητα, ο όρος «ΝΤ» είναι ίση με την σειρά NT. Η σειρά NT είναι ΝΤ-3, NT4, NT5 (2000, XP, 2003) και NT6 (Vista).

Win32 είναι ένα υποσύστημα που στοχεύετε C / C ++ κώδικα πάρα πολύ. Έτσι, δεν βλέπω το λόγο για τον οποίο δεν πρέπει να είναι σε θέση στόχο αυτό NT4 πλατφόρμα και υποσύστημα ή, αν αυτό είναι μια πλατφόρμα porting ενασκήσεως, αφαιρέστε τις εξαρτήσεις MFC που VC είναι πιθανόν επιβλητικό.

Προσθήκη του afxext.h στο μίγμα, ακούγεται για μένα σαν ένα ζήτημα συμβατότητας του υποσυστήματος. Είναι μέρος της MFC από την έρευνα μου στο Google. Η afxext.h φαίνεται να είναι οι επεκτάσεις MFC (Microsoft Foundation Class).

Μπορείτε να αφαιρέσετε την εξάρτηση σας για MFC; Τι τύπος της αίτησης είναι αυτό; (CLR, υπηρεσία, διεπαφή GUI;) Μπορείτε να μετατρέψετε το έργο σε ένα μη διαχειριζόμενο C ++ έργου σε VC 8.0;

Ας ελπίσουμε ότι κάποιοι από αυτό θα σας βοηθήσει κατά μήκος.

Απαντήθηκε 18/09/2008 στις 17:18
πηγή χρήστη

ψήφοι
-1

Η ιδέα είναι ότι το exe είναι απαραίτητη για τη σύνδεση με τη στατική βιβλιοθήκη.

Δοκιμάστε αυτό το «Διαμόρφωση Ιδιότητες», «Η χρήση της MFC» «Γενικά», για να «Χρήση MFC σε μια στατική βιβλιοθήκη» «Διαμόρφωση Ιδιότητες», «Η χρήση της ATL Γενικά», «» σε «Στατική Link to ATL»

"Διαμόρφωση Ιδιότητες", "C \ C ++", "Δημιουργία κώδικα", "Runtime Library" σε "multi-threaded (\ MT)"

Δοκιμή Πλατφόρμα Σώμα Machine: Visual Studio 2005 για Window XP SP2 μηχάνημα Πελάτης: Παράθυρο XP SP2 (δεν εγκαθίσταται VS2005)

Απαντήθηκε 21/11/2008 στις 00:04
πηγή χρήστη

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