[VC++ 6.0] Linker Warning LNK4089

vfl_freak

Premium-User
Hallo zusammen,

C++:
LINK : warning LNK4089: Alle Verweise auf "SHELL32.dll" wurden durch /OPT:REF verworfen
obwohl es hierzu div. Seiten im Web gibt, komme ich mit dieser Meldung nicht wirklich zurecht ...


Beim Versuch eine Release-Version meines Progs zu erstellen, tauchte die o. g. Warning auf.
Wenn ich all die Hinweise im Web richtig verstehe, ist sie im Grunde genommen nicht tragisch, da
die besagten Dateien als Input Libraries angegebenist, aber alle Aufrufe wegoptimiert wurden (bzw. es keine gibt) und der Linker die Referenzen wegoptimiert hast

Soweit, so gut :)

Ich habe dann zuerst in den Projekteinstellungen die Lib "shell32.dll" entfernt, aber die Warning kam immer noch ....
Selbst ein Disablen der Warning ("#pragma warning( disable : 4101 )") (in unterschiedlichen Sourcen und Headern) bringt keinen Erfolg ....

Auch wenn die Warnung ja scheinbar in Grunde harmlos ist, würde ich sie gerne beseitigen resp. zumindest den Grund dafür erfahren, warum ich sie immer noch bekomme !

Ich hoffe, irgendwer kann mir hier auf die Sprünge helfen!

Danke und Gruß
Klaus
 
Zuletzt bearbeitet von einem Moderator:
Hi.

Evtl. war bzw. ist irgendwo ein #pragma comment(lib, "shell32.lib") in deinen Quelldateien enthalten?

Gruß

\edit: Warnungen des Linkers kannst du nicht mit pragmas im Sourcecode abschalten. (LNK4089 ist etwas anderes als C4089 und etwas ganz anderes als C4101). Da mußt du schon in den Projekteinstellungen Einstellungen vornehmen.
 
Zuletzt bearbeitet:
Moin deepthroat,

nein, das ist nicht drin ...
Ich hatte schon in allen Dateien nach "shell" gesucht, aber nichts gefunden :-(

Gruß
Klaus
 
Hast du mal die Solution komplett neu erstellt?
Hast du irgendwelche .vcprops Dateien eingebunden?

Falls Du mit "Solution" das gesamte Projekt meinst, dann ja ... das mache in schöner Regelmäßigkeit :)

".vcprops" :confused:
Sagt mir nichts - wo würde ich die denn sehen?
Habe gerade mal schnell C: durchsuchen lassen und diese Datei auch nicht gefunden ...

Die eingestellten Projektoptionen sehen so aus :
C++:
ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /incremental:no /pdb:"Release/#GSWorkerServer.pdb" /machine:I386 /nodefaultlib:"Nafxcwd.lib Libcmtd.lib" /out:"k:\orga\internet\workerserver\#GSWorkerServer.exe"

und weiterhin
C++:
MFC mit einer Statischen Bibl. verwenden
// sowie
vorcompilierte Header nicht verwenden

Kann es da irgendwelche Abhängigkeiten geben ? ? ?

Gruß
Klaus
 
Zuletzt bearbeitet von einem Moderator:
Hallo vfl_freak,

im Grunde sagt dir der Linker ja schon alles :)

"OPT:REF" bedeutet das er Daten, auf die Verwiesen wird automatisch vom Linker entfernt werden. Wenn du diese Meldung nicht mehr haben willst dann setz die Linker Option einfach auf "OPT:NOREF", dann behält er diese Daten. Folglich ist auch die Warnung weg.

Ich hoffe ich konnte helfen :)

Gruß
 
Moin napstermania,

im Grunde sagt dir der Linker ja schon alles :)
"OPT:REF" bedeutet das er Daten, auf die Verwiesen wird automatisch vom Linker entfernt werden. Wenn du diese Meldung nicht mehr haben willst dann setz die Linker Option einfach auf "OPT:NOREF", dann behält er diese Daten. Folglich ist auch die Warnung weg.

ok, nur wo stelle ich dann des im VS ein?
In den Projekteinstellungen finde ich keine entsprechende Option - oder heißt sie unter 6.0 nur anders :confused::confused:

Gruß
Klaus


[EDIT] oder ist "/OPT:REF" ein Default, der nicht aufgeführt wird ? ?
 
Falls Du mit "Solution" das gesamte Projekt meinst
Ja, das "Oberprojekt" ist die Solution (.sln) meist aus mehreren Projekten besteht. (siehe z.B. http://www.ucertify.com/article/what-is-a-solution-in-visual-studio-net.html)
".vcprops" :confused:
Sagt mir nichts - wo würde ich die denn sehen?
Ich meinte vsprops (siehe http://msdn.microsoft.com/en-us/library/a4xbdz1e(VS.80).aspx). Die eingebundenen Property Sheets kann man im Property Manager Tab einsehen (siehe z.B. http://blog.emptycrate.com/node/421)

Was steht denn im Build-Protokoll?

Gruß

\edit: Ich sehe gerade du verwendest VC++ 6. Autsch.
 
Zuletzt bearbeitet:
\edit: Ich sehe gerade du verwendest VC++ 6. Autsch

Ja :-(
das ist leider eines der anliegenden Probleme .....

Bislang hat sich unser Chef standhaft geweigert, mich die Umgebung auf eine neuere Version umstellen zu lassen :rolleyes:

Da wir hier aber in absehbarer Zeit von XP auf Win7 umstellen wollen, habe ich noch die kleine Hoffnung, dass das Studio 6.0 dort event. nicht resp. nicht mehr 100 %-ig läuft und ich mich dann endlich mal an ein Update machen kann.
Event. muss ich ihm da auch ein bisschen was vorgauckeln :)

Ich denke, ich werde jetzt mal erst mit der Warnung leben (können) .... :p

Gruß
Klaus
 
Hallo vfl_freak,

du kannst die Option direkt in den Project Options im Link-Tab setzen. Es gibt leider keine Auswahl via GUI wie in den neueren Versionen, von daher bleibt dir nur die Änderung per Hand. Einfach /OPT:NOREF einfügen und es sollte deaktiviert sein. Ich kann dir aber nicht sagen wie sich das bei einer Release verhält, da ein Release standartmäsig Optimiert gelinkt wird.

Gruß
 

Neue Beiträge

Zurück