WINVER angeblich nicht defined, Lib's werden nicht ignoriert
-
Hallo,
kann jemand etwas zu diesem Problem sagen :ursprüngliches VC 6- Projekt( mit w2k-os) auf .NET 2003 (mit xp-os) umgesetzt.
Beim Kompilieren bekomme ich jetzt immer diese Meldung:
"WINVER not defined. Defaulting to 0x0501 (Windows XP and Windows .NET Server)"
Diese Meldung kommt einmal bei der Dialog-Klasse und einmal mit der Applikation-Klasse. In beiden Klassen steht aber ein
"#define _WIN32_WINNT 0x0500" im Header drin !Kompiliert wird das Programm trotz der zwei Warnungen und es läuft auch, wobei man unter w2k dann 4 x *.dll's von xp rüberkopieren muss, sonst geht nix. Ich würde es aber gerne unter xp kompilieren und ohne weitere dll's mitzuliefern auf w2k laufen lassen.
Wer hat 'nen Tipp, was hier schiefläuft? Danke
Gruß arni
-
Die Warnungen haben damit nichts zu tun.
Die DLL sind die MFC-DLL welche für Version 7.1 sind. In den BS sind die alten MFC -DLL bereist im BS drin. Nichtso bei den MFC-7.1.
Du musst die MFC statisch linken. Dadurch wird auch dein Programm größer.
-
Danke für deine Erklärung, UnixTom. das kommt schon gut hin, die Namen der gesuchten DLL's sind zB "msvcp71d.dll mfc71d.dll oder msvcr70d.dll". Habe sie auch alle statisch eingebunden, da tauchen die folgenden Fehlermeldungen auf:
nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) bereits in libcpmtd.lib(newop.obj) definiert
nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) bereits in LIBCMTD.lib(dbgdel.obj) definiert
nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) bereits in libcpmtd.lib(newaop.obj) definiert
nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) bereits in LIBCMTD.lib(delete2.obj) definiert
.\Debug/IsabelTelnet.exe : fatal error LNK1169: Ein oder mehrere mehrfach definierte Symbole gefundenHabe die folgenden Bibliotheken zusätzlich eingebunden
ws2_32.lib snmpapi.lib mgmtapi.lib
Die folgenden sollten(!) eigentlich ignoriert werden
libcmd.lib libcpmtd.lib LIBCMTD.lib
Zwei der Fehlermeldungen beziehen sich sogar auf eine Bibliothek, die der Linker eigntlich ignorieren sollte. (LIBCMTD.lib) Tut er aber offensichtlich nicht. Hat jemand von euch dafür eine Erklärung?
Würd mich tierisch freuen.
danke arnold
-
Hat niemand einen Anhaltspunkt oder eine Idee ? (push)
Grüße
arni
-
arni schrieb:
"WINVER not defined. Defaulting to 0x0501 (Windows XP and Windows .NET Server)"
Na und? kommt bei mir auch gerne, wenn's dich stört mach halt irgendwo ein
#define WINVER 0x0501
hin.
Dass es nachher statisch nicht mehr läuft liegt daran, das irgendwelche Funktionen doppelt eingebunden sind. Aber der Compiler sagt doch auch da, was zu tun ist (oder)? z.B. Standardbibliotheken vom Include ausschliessen oder sowas
-
Okay, das mit dem "#define WINVER 0x500" (w2k) habe ich mittlerwweile auch gemacht, das Ulkige ist, dass man die Definition in der stdafx, in der Datei der Dialogklasse und der Applikationklasse machen musste, ehe der Compiler da Ruhe gegeben hat.
@gast
Das andere Problem ist damit aber leider überhaupt nicht gelöst! Wie man in dem Posting sieht, meckert der Linker an Bibliotheken rum, die in den Eingenschaften des Projekts a u s g e s c h l o s s e n sind. Sie werden offensichtlich trotzdem mitreingenommen. Egal ob es die Erstellung der Debug oder der Release-Version ist, der Linker moniert die Doppeldeklaration in Bibliotheken, die jeweils ignoriert werden sollen.
Zu diesem Zweck sind die entsprechenden Lib's in den "Eigenschaften | Linker | Eingabe | Bibliothek ignorieren" eingetragen. Unter VC 6 hat das auch immer getan, bei dieser IDE aber irgendwie nicht.Was muss noch getan werden, damit er die Lib's auch tatsächlich ausschließt?
Danke für eure Hilfen
arni