[Umstellung auf VS 2010] Konflikt "_ITERATOR_DEBUG_LEVEL"

vfl_freak

Premium-User
Moin,

ich stelle zurzeit meine VS6-Projekte auf VS 2010 um.
Bin jetzt beim letzten der 6 Projekte angelangt und habe plötzlich ein Problem, bei dem ich nicht mehr weiter weiß :
cryptlib.lib(arc4.obj) : error LNK2038: Konflikt ermittelt für "_ITERATOR_DEBUG_LEVEL": Der Wert "0" stimmt nicht mit dem Wert "2" in CRMAuftragsLib.obj überein.
1>cryptlib.lib(cryptlib.obj) : error LNK2038: Konflikt ermittelt für "_ITERATOR_DEBUG_LEVEL": Der Wert "0" stimmt nicht mit dem Wert "2" in CRMAuftragsLib.obj überein.
1>cryptlib.lib(filters.obj) : error LNK2038: Konflikt ermittelt für "_ITERATOR_DEBUG_LEVEL": Der Wert "0" stimmt nicht mit dem Wert "2" in CRMAuftragsLib.obj überein.
1>cryptlib.lib(misc.obj) : error LNK2038: Konflikt ermittelt für "_ITERATOR_DEBUG_LEVEL": Der Wert "0" stimmt nicht mit dem Wert "2" in CRMAuftragsLib.obj überein.
1>cryptlib.lib(fips140.obj) : error LNK2038: Konflikt ermittelt für "_ITERATOR_DEBUG_LEVEL": Der Wert "0" stimmt nicht mit dem Wert "2" in CRMAuftragsLib.obj überein.
1>cryptlib.lib(algparam.obj) : error LNK2038: Konflikt ermittelt für "_ITERATOR_DEBUG_LEVEL": Der Wert "0" stimmt nicht mit dem Wert "2" in CRMAuftragsLib.obj überein.
1>cryptlib.lib(queue.obj) : error LNK2038: Konflikt ermittelt für "_ITERATOR_DEBUG_LEVEL": Der Wert "0" stimmt nicht mit dem Wert "2" in CRMAuftragsLib.obj überein.
1>cryptlib.lib(mqueue.obj) : error LNK2038: Konflikt ermittelt für "_ITERATOR_DEBUG_LEVEL": Der Wert "0" stimmt nicht mit dem Wert "2" in CRMAuftragsLib.obj überein.
.\GSOrgaServer___Win32_Release\#GSCRMServer.exe : fatal error LNK1319: 8 Konflikte ermittelt

Habe schon den halben Vormittag im Internet verbracht und versucht, mich schlauer zu machen ...

Ich kann folgende dort genannte Fehlerquellen definitiv ausschließen :

* die genannte "cryptlib" ist definitiv von mir mit VS2010 erstellt worden - und sowohl als Debug- wie als Relase-Version. Sie wird in allen anderen Projekten ebenfalls genutzt - hier treten die Probleme jedoch nicht auf.

* die Pfade habe ich auch in allen Projekten gleich gesetzt (jetzt geschätzte 25-mal geprüft). In den Eigenschaftsseiten ist unter "C/C++" in der Eigenschaft "zusätzliche Includeverzeichnisse" der korrekte Pfad auf der Verzeichnis, wo die lib liegt, gesetzt. Zudem wird unter "Linker / zusätzliche Bibliotheksverzeichnisse" auf das jeweilige konkrete Debug- oder Relase-Unterzeichnis in diesem Pfads verwiesen, wo sich die jeweilige "cryptolib.lib"-Datei befindet.

* das Makro "_ITERATOR_DEBUG_LEVEL" ist weder in der lib noch in meinen Sourcen irgendwo definiert

Was mich ein wenig irritiert: die Source "CRMAuftragsLib.cpp" ist (nach StdAfx.h) die erste, die compliert wird (problemlos).
Liegt das Problem nur hier begründet oder wird es für die weiteren Sourcen dann nur einfach nicht mehr angezeigt ?

BTW: die Debug-Version des Programms lässt sich problemlos übersetzen ....


Ich hoffe, dass irgendwer noch eine weitere Idee hat ;-)

Danke und Gruß
Klaus
 

vfl_freak

Premium-User
Moin sheel,

was genau meinst Du mit "Teilprojekt" ?

Ich bearbeite immer nur genau ein Projekt in einer Projektmappe - habe nie mehrere gleichzeitig geöffnet!
Von daher sollten doch die Eigenschaftsseiten eindeutig sein, oder ?

Habe jetzt die Eigenschaften mehrfach geprüft ....

Gruß
Klaus
 

deepthroat

Erfahrenes Mitglied
Hi.

Welche Runtime Bibliothek verwendest du

  1. in der Bibliothek
    • in der Release Buildkonfiguration
    • in der Debug Buildkonfiguration
  2. in dem Projekt
    • in der Release Buildkonfiguration
    • in der Debug Buildkonfiguration

?

Gruß
 
Zuletzt bearbeitet:

vfl_freak

Premium-User
Hi deepthroat,

ja, ich hatte auch gerade nochmal jedes einzelne Feld der Eigenschaften mit einem anderen Projekt verglichen und bin dabei drauf gestoßen, dass statt /MT tatsächlich /MTd gesetzt war :eek: :mad:

Nach der Umsetzung kommt jetzt der "_ITERATOR_DEBUG_LEVEL"-Fehler nicht mehr, allerdings hunderte doppelt deklarierter Symbole.
Da ist wohl noch ein Problem mit der Reihenfolge, in der die Libs gelinkt werden. Muss mir wohl nochmal die Eingaben unter "Linker/Eingabe" vornehmen ... :rolleyes:

Erstmal Danke - Feedback kommt später ;)

Gruß
Klaus
 

vfl_freak

Premium-User
Moin,

ah, endlich kann ich fehlerfrei compilieren :)

Hatte bei meiner ganzen Testerei wohl versehentlich die Libs "nafxcwd.lib" und "libcmtd.lib" unter "Zusätzliche Abhängigkeiten" eingetragen (was ja IMHO die Debug-Versionen sind, richtig?).
Mit "nafxcw.lib" und "libcmt.lib" sind auch die restlichen Fehler auch weg :p

Ich habe dazu aber noch eine grundlegende (Verständnis-)Frage :
In den ersten Projekten ist folgendes eingetragen :
C++:
Zusätzliche Abhängigkeiten: ws2_32.lib;cryptlib.lib;nafxcw.lib;libcmt.lib
Bestimmte Standardbibliotheken ignorieren: Nafxcwd.lib;Libcmtd.lib

Im hier zuvor beschriebenen Projekt steht jedoch :
C++:
Zusätzliche Abhängigkeiten: ws2_32.lib;cryptlib.lib;nafxcw.lib;libcmt.lib
Bestimmte Standardbibliotheken ignorieren: Libc.lib;libcmt.lib;msvcrt.lib;libcd.lib;msvcrtd.lib

Kann man irgendwer erklären (oder einen guten Link zum nachlesen geben), was wann ignoriert werden muss ?
Ich blicke da leider nicht so wirklich durch ....

Danke und Gruß
Klaus
 
Zuletzt bearbeitet von einem Moderator:

deepthroat

Erfahrenes Mitglied
Hi.

Also normalerweise sollte man überhaupt keine Bibliotheken ignorieren (müssen) und man sollte eigentlich auch keine Laufzeitbibliothek explizit angeben müssen (da das bereits die /MT /MD Compilerschalter erledigen).

Weiterhin ist eigenlicht recht merkwürdig, dass du einerseits explizit die libcmt.lib linkst, gleichzeitig diese Bibliothek ignorierst.

Es scheint das du die statische RT Bibliothek verwenden möchtest (z.B. weil eine Bibliothek davon abhängt), hast aber /MT angegeben... ? Dann stell doch einfach auf /MD (bzw. /MDd) um und lass den Rest bei zusätzliche Abhäng. und ignorierten Bibliotheken weg.

Siehe http://msdn.microsoft.com/en-us/library/abx4dbyh(v=VS.100).aspx und http://support.microsoft.com/kb/154753

\edit: http://www.davidlenihan.com/2008/01/choosing_the_correct_cc_runtim.html
\edit2: vermutl. Ursache: http://support.microsoft.com/kb/148652

Gruß
 
Zuletzt bearbeitet:

vfl_freak

Premium-User
Hi,

ah, das bringt ja schon mal ein wenig Licht ins Dunkel :p

Danke für die Links - werde sie mir heute oder morgen mal intensiv zu Gemüte führen!

Danke und Gruß
Klaus
 

Neue Beiträge