Andere "lib" linken ?
-
Hallo
Wie kann ich unter Visual Studio 2008
eine andere Lib linken? Ich bekomme immer vollegende Fehlermeldung:
"fatal error LNK1104: cannot open file 'mfc42ud.lib'" Ich meine es liegt daran das es die lib nicht mehr gibt
und diese durch "mfc80ud.lib" ersetzt wurde. Aber wo und wie stellt man das um ? Konnte das bis jetzt nicht finden ??Grüße
Martin
-
Das liegt daran, dass Du eine andere statische LIB verwendest, die mit VC6 kompiliert wurde. Das geht nicht.
Alle Objektmodule müssen mit dem selben Compiler und der gleichen CRT erzeugt werden.Schmeiß mal die Option /VERBOSE im Linker an, dann wird Dir klarwerden welche Lib alt ist.
-
Hi
Ok ... Wird mir aber noch nicht ganz klar??
Da werden eine Menge von Libs mit v6.0A geladen. Sind die schon das Problem ?
Und Warum Werden die nicht aus 9.0 geladen ? Sollte das nicht so sein ??Linking... Searching libraries Searching C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\lib\mfc90ud.lib: Searching C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\lib\mfcs90ud.lib: Searching C:\Program Files\Microsoft Visual Studio 9.0\VC\lib\msvcrtd.lib: Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\kernel32.lib: Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\user32.lib: Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\gdi32.lib: Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\msimg32.lib: Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\comdlg32.lib: Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\winspool.lib: Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\advapi32.lib: Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\shell32.lib: Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\comctl32.lib: Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\shlwapi.lib: Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\uuid.lib: Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\oledlg.lib: Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\ole32.lib: Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\oleaut32.lib: Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\urlmon.lib: Searching C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\lib\atlsd.lib: Searching C:\Program Files\Microsoft Visual Studio 9.0\VC\lib\comsuppwd.lib: LINK : fatal error LNK1104: cannot open file 'mfc42ud.lib'
Und achja gibt es eine Möglichkeit auch unter Linker -> Commandline etwas zu editieren ? Ich suche immer so Lange bis ich die Option finde ??
...
Gruß
Martin
-
Schau mal unter Linker -> Eingabe -> Zusätzliche Abhängigkeiten
Da kannst Du die libs angeben.
-
Hi
Jo kenn ich. Ist komplett leer.
Gruß
-
Das eine sind Libs aus dem Windows SDK 6.0 und das andere sind Libs aus dem MSVC 9.0. Ich finde das nicht ungewöhnlich. Sind zwei verschiedene Produkte und haben deshalb unterschiedliche Versionen.
mfc42ud.lib wird wahrscheinlich in einem Projekt-Konfig oder einer Header als #pragma-Anweisung drin stehen. Ich kann mir nicht vorstellen, das es aus dem Nichts kommt. Benutze doch mal ne "Textsuche in Dateien".
-
Hi
Ja hab ich auch bemerkt dass das was anderes ist.
C:\Program Files\Microsoft SDKs\Windows\v6.0A Mich hat die 6.0 irretiert und hab dadurch fälschlicherweise angenommen das die 6.0 was mit VC6.0 zu tun hat.
Ist wohl aber nicht so.Ich kann mir nicht vorstellen, das es aus dem Nichts kommt.
Ich denke da hast du schon recht aber wie gesagt ich finde es nicht wo
...
#pragma kommt im Projekt nur einmal vor als #pragma once.
Und es gibt in der Solution nur eine Projekt-Config und da steht eigentlich nichts was er linken soll.
Unter CommandLine müsste doch dann irgendwas von wegen mit /IMPLIB stehen oder ? Ist aber nicht so.Mich wundert auch, dass so viele "libs" gelinkt werden. Ich finde aber niergends ein Liste wo auch steht das diese zu linken sind ???
Ich suche vielleicht an den falschen Stellen ??
Ich hätte sowas erwartet wie:/IMPLIB:"kernel32.lib"
/IMPLIB:"user32"etc etc ? aber ist nicht ...
Gruß
Martin
-
Äää der Parameter /IMPLIB ist natürlich falsch
...