2009-10-15 4 views
27

Ich habe vor kurzem eine Multiprojekt-Lösung konvertiert, um .dlls anstelle von .libs für jedes der Projekte zu verwenden. Ich erhalte jetzt jedoch eine Linker-Warnung für jedes Projekt, wie im Beispiel angegeben. MSDN hat nicht dazu beigetragen, so hilfreich zu sein. Warum ist das und wie kann ich es lösen?LNK4075: Ignorieren von '/ EDITANDCONTINUE' aufgrund der '/ OPT: ICF' Spezifikation

Warnung 2 Warnung LNK4075: '/ EDITANDCONTINUE' wegen '/ OPT: ICF' ignorieren Spezifikation LudoCamera.obj

+0

Warum ist es ein Linker-Fehler? Ich glaube dir, ich bin nur unerfahren mit C++ und Visual Studio. Der Wechsel von ZI (Program Database Edit und Continue) zu Zi (Program Database) führte dazu, dass diese Fehler verschwanden, aber es könnte nur das Grundproblem verbergen. Könnten Sie das näher ausführen? – Mark

+2

@Mark gibt es effektiv drei Stufen des Kompilierens, (1) Parsen - zu verstehen, was jede cpp-Datei sagt, (2) Code-Generierung - Opcodes für jede Funktionsdatei zu generieren, und (3) Verknüpfung - Verknüpfung der Opcodes für jede Funktion togeather. Diese Warnung beginnt mit LNK und weist darauf hin, dass es sich um einen Linker-Fehler handelt. –

+1

Es ist eine nette Geste, dass dies immer noch "Ignorieren/EDITANDCONTINUE" sagt, wenn es keine "/ EDITANDCONTINUE" -Option gibt. –

Antwort

30

Entweder haben kann "Bearbeiten und weiter" Support oder Optimierungen. Normalerweise setzen Sie "Edit and continue" auf Debug-Builds und Optimierungen bei Release-Builds.

Edit and continue ermöglicht es Ihnen, Code während des Debuggens zu ändern und das Programm einfach weiterlaufen zu lassen. Es wird nicht unterstützt, wenn der Code ebenfalls optimiert werden muss.

+0

Gibt es eine bestimmte Flagge, die ich weitergeben kann? Ich habe '\ Zi' aber immer noch diese Warnung erhalten. – CroCo

+0

Es ist '/', nicht '\\'. Stellen Sie außerdem sicher, dass Sie es auf dem Build (DEBUG oder RELEASE) ausgewählt haben, den Sie erstellen möchten. –

0

Ich weiß, was es ist, sie sind keine Release-Versionen. Ich denke, dass der Linker immer noch denkt, dass sie Debug-Builds sind, die immer noch die Debug-Edit- und Continue-Funktionalität haben, die verwendet wird, wenn das Debugging noch eingeschaltet ist.

Bob.

+0

Ich hatte eine Lib kompiliert für die Veröffentlichung in Debug-Projekt importiert und die Warnung erschien. So etwas in der Tat. – TechNyquist

6

Ich habe auch diese Warnung, wenn ein VS2008-Projekt von LIB-Umwandlung zu .dll und die Abhilfe war, um die Linker/Optimierungseinstellungen auf der Debug Win32 Konfiguration von Standard zu ändern:

Referenzen = Halt Unreferenzierte Daten (/ OPT: NOREF)

COMDAT Folding Enable = keine redundanten COMDATs entfernen (/ OPT: zu NOICF)

13

ich dieses Problem hatte. Ich habe die Projekteigenschaften geöffnet und dann auf der Registerkarte C/C++ auf Allgemein geklickt. Es gibt eine Option, die "Debug Information Format" sagt, die ich in Programmdatenbank (/ Zi) geändert habe, und ich habe die Warnung nicht mehr erhalten.

Ich hoffe, das hilft. Greetz

Richard