Was mache ich wenn eine Lib bereits gelinkt wurden ist

Alles zu Entwicklungsumgebungen und Editoren für Qt
abcschützling
Beiträge: 24
Registriert: 27. Oktober 2009 22:37

Was mache ich wenn eine Lib bereits gelinkt wurden ist

Beitrag von abcschützling »

Hallo,

ich bekomme ständig folgende Fehlermeldung.

msvcprtd.lib(MSVCP71D.dll) : error LNK2005: "public: __thiscall std::basic_string,class std::allocator >::~basic_string,class std::allocator >(void)" (??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) bereits in ltilib7_dwin32.lib(ltiMatrix.obj) definiert

Vielleicht weiß ja jemand, wie man diese Fehlermelung unter Visual Studio 2003 weg bekommt.


Gruß
MiKla
Beiträge: 134
Registriert: 29. Juli 2007 15:29

Beitrag von MiKla »

Sowas kommt habe ich schon gesehen, wenn man von Debug auf Release oder umgekehrt wechselt und die Objektdateien keinen seperaten Ordner (Debug/Release) haben. Wenn es das ist, hilft ein clean vorher.

Michael
abcschützling
Beiträge: 24
Registriert: 27. Oktober 2009 22:37

Beitrag von abcschützling »

Ich habe jetzt durch /FORCE:MULTIPLE die Fehlermeldung auf warnings gestellt. Das funktoniert auch !

ibcpmtd.lib(xmutex.obj) : warning LNK4006: '"public: void __thiscall std::_Mutex::_Lock(void)" (?_Lock@_Mutex@std@@QAEXXZ)' bereits in 'main.obj' definiert; zweite Definition wird ignoriert

Ich möchte aber jetzt aber, dass beide Definitionen gelinkt werden.

Weiß das zufällig jemand ?

Gruß
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

ch möchte aber jetzt aber, dass beide Definitionen gelinkt werden.
Beide definitionen geht ned .... es kann nur eine Impl fuer ein Symbol geben !

std::_Mutex ??? Das ist gcc mit ner "neuen" erweiterung ? Wer sonst traut sich im std:: eigene Objecte anzulegen :-)
aber der gcc kann doch keine .libs linken ?
Wo bekommst du den mutex im std:: her ?
Was ist das fuer eine STL impl ?
Also im ersten Post iss definitiv visual studio ...
aber die Meldung im 2ten Post, das kann ned visual studio sein oder ?

Ich nehm an, du hasst irgendwo einstellungen die noch eine andere version der c++ lib (cpmtd.lib, aber die standard c++ lib linkt man doch in VS ned mit -L zu ... ? ) erfordert. und wenn er gegen beide linken will bekommt er die doppelten symbole, da ja beide libs das selbe implementieren.

Ciao ...
abcschützling
Beiträge: 24
Registriert: 27. Oktober 2009 22:37

Beitrag von abcschützling »

der gcc kann doch keine .libs linken ?

Ne, das geht nicht. Gegenfrage, warum ?
Was ist das fuer eine STL impl ?
Also, ich versuche QT mit einem zweiten Framework (LTILib) zu Linken. Beide Frameworks benutzen Komponenten aus dem gtk.
Also im ersten Post iss definitiv visual studio ...
aber die Meldung im 2ten Post, das kann ned visual studio sein oder ?

Es ist ein warning von Visual Studio. Zumindest zeig es Visual Studio an.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Ne, das geht nicht. Gegenfrage, warum ?
VS (der compiler) und der gcc nutzen (geringfuegig) unterschiedliche Formate von libs (libs sind nix anderes als mehrere compilierte obj dateien, nur der container unterscheidet sich, der gcc verwendet das linux archiv format). die haben normal auch andere endungen. .lib = statische lib fuer VS, Intel .... .a = statische lib fuer gcc. Also normalerweise. Kann der gcc nun auch libs ?
Also, ich versuche QT mit einem zweiten Framework (LTILib) zu Linken. Beide Frameworks benutzen Komponenten aus dem gtk.
Du meinst QT verwendet Teile aus dem gtk ? Oder meinst deine App ?

Aber eher unrelevant.
Was mich nur wundert, ist das es irgendwo in namespace std (eigentlich der von der stl) nen mutex gibt. Normal duerfte es das nicht (verletzung gegen die verhaltenszusicherungen des STL standards) oder es ist eine ganz neue Impl (im neuen standard kommt ja MT untertuetzung).

Aber das auch nur am Rande ....

wichtig ist, deine Lib gegen die du auch linken willst (LTILib) ist hoechstwahrscheinlich mit anderen compilerflags (multithread, multithreaded dll, multithreaded debug, multithreaded dll debug ... ) uebersetzt. Das heisst deine App will gegen eine c++ lib linken und deine auch zugelinkte lib erfordert eine andere c++ lib die genau das selbe implementiert -> konflikt

gib mal bei den linkeroptionen (Befehlzeile) zusaetzlich /VERBOSE:LIB
an. und schaau dir die meldungen an, bzw poste die hier mal. Da erkennst, welche runtime deine zugelinkte lib haben will

Kann es sein, dass deine Anwendung im debug modus uebersettzt wird, die LTILib du aber nur im release hasst, bzw dagegen linkst ....
bringt die LTLib eine debug lib mit, wenn ja link die mal gegen deine debug version .....

http://support.microsoft.com/kb/154753

Ciao ...
abcschützling
Beiträge: 24
Registriert: 27. Oktober 2009 22:37

Beitrag von abcschützling »

gib mal bei den linkeroptionen (Befehlzeile) zusaetzlich /VERBOSE:LIB
an. und schaau dir die meldungen an, bzw poste die hier mal.

Code: Alles auswählen

Bibliotheken werden durchsucht
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\odbc32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\odbccp32.lib:
    Durchsuchen von ../../../win/lib\ws2_32.lib:
    Durchsuchen von ../../../win/lib\psapi.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\pdh.lib:
    Durchsuchen von ../../../win/lib\glib-1.3.lib:
    Durchsuchen von ../../../win/lib\gdk-1.3.lib:
    Durchsuchen von ../../../win/lib\gtk-1.3.lib:
    Durchsuchen von ../../../win/lib\gmodule-1.3.lib:
    Durchsuchen von ../../../win/lib\gthread-1.3.lib:
    Durchsuchen von ../../../lib/\ltilib7_dwin32.lib:
    Durchsuchen von c:\Qt\4.5.2\lib\qtmaind.lib:
    Durchsuchen von c:\Qt\4.5.2\lib\QtScriptd4.lib:
    Durchsuchen von c:\Qt\4.5.2\lib\QtXmld4.lib:
    Durchsuchen von c:\Qt\4.5.2\lib\QtGuid4.lib:
    Durchsuchen von c:\Qt\4.5.2\lib\QtCored4.lib:
    Durchsuchen von c:\Qt\4.5.2\lib\QtUiToolsd.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\kernel32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\user32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\gdi32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\winspool.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\comdlg32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\advapi32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\shell32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\ole32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\oleaut32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\uuid.lib:
    Durchsuchen von \LTILib_VC2003\win\lib\glib-1.3.lib:
    Durchsuchen von \LTILib_VC2003\win\lib\gdk-1.3.lib:
    Durchsuchen von \LTILib_VC2003\win\lib\gtk-1.3.lib:
    Durchsuchen von \LTILib_VC2003\win\lib\gmodule-1.3.lib:
    Durchsuchen von \LTILib_VC2003\win\lib\gthread-1.3.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\libcpd.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\LIBCD.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\OLDNAMES.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\libcpmtd.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\LIBCMTD.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\msvcprtd.lib:
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: __thiscall std::basic_string,class std::allocator >::~basic_string,class std::allocator >(void)" (??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ)' bereits in 'main.obj' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: class std::basic_string,class std::allocator > & __thiscall std::basic_string,class std::allocator >::operator+=(class std::basic_string,class std::allocator > const &)" (??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z)' bereits in 'ltilib7_dwin32.lib(ltiIoHandler.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: __thiscall std::basic_string,class std::allocator >::basic_string,class std::allocator >(class std::basic_string,class std::allocator > const &)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z)' bereits in 'ltilib7_dwin32.lib(ltiException.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: __thiscall std::basic_string,class std::allocator >::basic_string,class std::allocator >(char const *)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z)' bereits in 'main.obj' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: __thiscall std::basic_string,class std::allocator >::basic_string,class std::allocator >(unsigned int,char)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z)' bereits in 'ltilib7_dwin32.lib(ltiBMPFunctor.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: class std::basic_string,class std::allocator > & __thiscall std::basic_string,class std::allocator >::operator+=(char const *)" (??Y?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z)' bereits in 'ltilib7_dwin32.lib(ltiIoHandler.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: int __thiscall std::ios_base::width(int)" (?width@ios_base@std@@QAEHH@Z)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: void __thiscall std::basic_ios >::setstate(int,bool)" (?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: class std::basic_string,class std::allocator > & __thiscall std::basic_string,class std::allocator >::append(unsigned int,char)" (?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ID@Z)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: bool __thiscall std::ctype::is(short,char)const " (?is@?$ctype@D@std@@QBE_NFD@Z)' bereits in 'ltilib7_dwin32.lib(ltiBMPFunctor.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: static char __cdecl std::char_traits::to_char_type(int const &)" (?to_char_type@?$char_traits@D@std@@SADABH@Z)' bereits in 'ltilib7_dwin32.lib(ltiBMPFunctor.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: static bool __cdecl std::char_traits::eq_int_type(int const &,int const &)" (?eq_int_type@?$char_traits@D@std@@SA_NABH0@Z)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: static int __cdecl std::char_traits::eof(void)" (?eof@?$char_traits@D@std@@SAHXZ)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: int __thiscall std::basic_streambuf >::snextc(void)" (?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ)' bereits in 'ltilib7_dwin32.lib(ltiBMPFunctor.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: int __thiscall std::basic_streambuf >::sgetc(void)" (?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ)' bereits in 'ltilib7_dwin32.lib(ltiBMPFunctor.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: class std::basic_streambuf > * __thiscall std::basic_ios >::rdbuf(void)const " (?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: unsigned int __thiscall std::basic_string,class std::allocator >::max_size(void)const " (?max_size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ)' bereits in 'main.obj' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: int __thiscall std::ios_base::width(void)const " (?width@ios_base@std@@QBEHXZ)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: class std::basic_string,class std::allocator > & __thiscall std::basic_string,class std::allocator >::erase(unsigned int,unsigned int)" (?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z)' bereits in 'main.obj' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: __thiscall std::locale::~locale(void)" (??1locale@std@@QAE@XZ)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: class std::locale __thiscall std::ios_base::getloc(void)const " (?getloc@ios_base@std@@QBE?AVlocale@2@XZ)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: bool __thiscall std::basic_istream >::_Ipfx(bool)" (?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z)' bereits in 'ltilib7_dwin32.lib(ltiBMPFunctor.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: void __thiscall std::basic_streambuf >::_Unlock(void)" (?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: void __thiscall std::basic_streambuf >::_Lock(void)" (?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: __thiscall std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QAE@XZ)' bereits in 'libcpd.lib(cerr.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: void __thiscall std::locale::facet::_Register(void)" (?_Register@facet@locale@std@@QAEXXZ)' bereits in 'libcpd.lib(locale0.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: void __thiscall std::locale::facet::_Incref(void)" (?_Incref@facet@locale@std@@QAEXXZ)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: static unsigned int __cdecl std::ctype::_Getcat(class std::locale::facet const * *)" (?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@@Z)' bereits in 'ltilib7_dwin32.lib(ltiBMPFunctor.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: class std::locale::facet const * __thiscall std::locale::_Getfacet(unsigned int)const " (?_Getfacet@locale@std@@QBEPBVfacet@12@I@Z)' bereits in 'libcpd.lib(locale0.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: __thiscall std::locale::id::operator unsigned int(void)" (??Bid@locale@std@@QAEIXZ)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: __thiscall std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QAE@H@Z)' bereits in 'libcpd.lib(cerr.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: char __thiscall std::basic_ios >::widen(char)const " (?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z)' bereits in 'ltilib7_dwin32.lib(ltiBMPFunctor.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: unsigned int __thiscall std::basic_string,class std::allocator >::size(void)const " (?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ)' bereits in 'main.obj' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: int __thiscall std::basic_streambuf >::sbumpc(void)" (?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ)' bereits in 'ltilib7_dwin32.lib(ltiBMPFunctor.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: static int __cdecl std::char_traits::to_int_type(char const &)" (?to_int_type@?$char_traits@D@std@@SAHABD@Z)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: int __thiscall std::basic_streambuf >::sputc(char)" (?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: char __thiscall std::basic_ios >::fill(void)const " (?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: int __thiscall std::ios_base::flags(void)const " (?flags@ios_base@std@@QBEHXZ)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: class std::basic_ostream > & __thiscall std::basic_ostream >::flush(void)" (?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: class std::basic_ostream > * __thiscall std::basic_ios >::tie(void)const " (?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: bool __thiscall std::ios_base::good(void)const " (?good@ios_base@std@@QBE_NXZ)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"public: void __thiscall std::basic_ostream >::_Osfx(void)" (?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ)' bereits in 'ltilib7_dwin32.lib(ltiVector.obj)' definiert; zweite Definition wird ignoriert
msvcprtd.lib(MSVCP71D.dll) : warning LNK4006: '"bool __cdecl std::uncaught_exception(void)" (?uncaught_exception@std@@YA_NXZ)' bereits in 'libcpd.lib(uncaught.obj)' definiert; zweite Definition wird ignoriert
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\MSVCRTD.lib:
MSVCRTD.lib(MSVCR71D.dll) : warning LNK4006: '"public: __thiscall bad_cast::bad_cast(char const *)" (??0bad_cast@@QAE@PBD@Z)' bereits in 'LIBCD.lib(stdexcpt.obj)' definiert; zweite Definition wird ignoriert
MSVCRTD.lib(ti_inst.obj) : warning LNK4006: '"private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z)' bereits in 'LIBCD.lib(typinfo.obj)' definiert; zweite Definition wird ignoriert
MSVCRTD.lib(ti_inst.obj) : warning LNK4006: '"private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z)' bereits in 'LIBCD.lib(typinfo.obj)' definiert; zweite Definition wird ignoriert
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\odbc32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\odbccp32.lib:
    Durchsuchen von ../../../win/lib\ws2_32.lib:
    Durchsuchen von ../../../win/lib\psapi.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\pdh.lib:
    Durchsuchen von ../../../win/lib\glib-1.3.lib:
    Durchsuchen von ../../../win/lib\gdk-1.3.lib:
    Durchsuchen von ../../../win/lib\gtk-1.3.lib:
    Durchsuchen von ../../../win/lib\gmodule-1.3.lib:
    Durchsuchen von ../../../win/lib\gthread-1.3.lib:
    Durchsuchen von ../../../lib/\ltilib7_dwin32.lib:
    Durchsuchen von c:\Qt\4.5.2\lib\qtmaind.lib:
    Durchsuchen von c:\Qt\4.5.2\lib\QtScriptd4.lib:
    Durchsuchen von c:\Qt\4.5.2\lib\QtXmld4.lib:
    Durchsuchen von c:\Qt\4.5.2\lib\QtGuid4.lib:
    Durchsuchen von c:\Qt\4.5.2\lib\QtCored4.lib:
    Durchsuchen von c:\Qt\4.5.2\lib\QtUiToolsd.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\kernel32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\user32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\gdi32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\winspool.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\comdlg32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\advapi32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\shell32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\ole32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\oleaut32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\uuid.lib:
    Durchsuchen von \LTILib_VC2003\win\lib\glib-1.3.lib:
    Durchsuchen von \LTILib_VC2003\win\lib\gdk-1.3.lib:
    Durchsuchen von \LTILib_VC2003\win\lib\gtk-1.3.lib:
    Durchsuchen von \LTILib_VC2003\win\lib\gmodule-1.3.lib:
    Durchsuchen von \LTILib_VC2003\win\lib\gthread-1.3.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\libcpd.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\LIBCD.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\OLDNAMES.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\libcpmtd.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\LIBCMTD.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\msvcprtd.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib\MSVCRTD.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\odbc32.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\odbccp32.lib:
    Durchsuchen von ../../../win/lib\ws2_32.lib:
    Durchsuchen von ../../../
win/lib\psapi.lib:
    Durchsuchen von c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\lib\pdh.lib:
    Durchsuchen von ../../../win/lib\glib-1.3.lib:
    Durchsuchen von ../../../win/lib\gdk-1.3.lib:
    Durchsuchen von ../../../win/lib\gtk-1.3.lib:
    Durchsuchen von ../../../win/lib\gmodule-1.3.lib:
    Durchsuchen von ../../../win/lib\gthread-1.3.lib:
    Durchsuchen von ../../../lib/\ltilib7_dwin32.lib:
    Durchsuchen von c:\Qt\4.5.2\lib\qtmaind.lib:
    Durchsuchen von c:\Qt\4.5.2\lib\QtScriptd4.lib:
    Durchsuchen von c:\Qt\4.5.2\lib\QtXmld4.lib:
    Durchsuchen von c:\Qt\4.5.2\lib\QtGuid4.lib:
    Durchsuchen von c:\Qt\4.5.2\lib\QtCored4.lib:
    Durchsuchen von c:\Qt\4.5.2\lib\QtUiToolsd.lib:
Durchsuchen der Bibliotheken abgeschlossen
LINK : warning LNK4098: Standardbibliothek 'LIBCMTD' steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
LINK : warning LNK4098: Standardbibliothek 'MSVCRTD' steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
Schlau werde ich nicht daraus :(

Gruß
abcschützling
Beiträge: 24
Registriert: 27. Oktober 2009 22:37

Beitrag von abcschützling »

Kann es sein, dass deine Anwendung im debug modus uebersettzt wird, die LTILib du aber nur im release hasst, bzw dagegen linkst ....
bringt die LTLib eine debug lib mit, wenn ja link die mal gegen deine debug version .....
Ich glaube da gibt es eine debug version. Zumindest gibt es einen Ordner "obj", in dem ein anderer Ordener "WIN32 Debug" vorhanden ist. Aber wie link ich den denn jetzt gegen meine debug version.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

DU hasst doch visual studio als IDE oder ?

bei den projecteinstellungen machst du doch einstellungen fuer deine "Konfiguration"
Konfigurationen sind varianten fuer Compiler / Linker einstellungen.
VS legt dir normal bei jedem neuen Project eine fuer Debug und eine fuer release an ....

Bei Project / Eigenschaften für Project kannst die Pflegen, und da gibts eine Combobox wo deine Konfiguration auswaehlen kannst ...
Standardmaessig iss immer Debug ausgewaehlt also uebersetzt auch immer die Debug version.
Fuer debug und release kannst aber getrennte einstellungen machen, also auch bei release die lib und bei debug die andere lib linken ...

Ciao ...
abcschützling
Beiträge: 24
Registriert: 27. Oktober 2009 22:37

Beitrag von abcschützling »

Was macht man eigentlich mit /NODEFAULT:

Gruß
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Denk gar nicht erst dran ! :twisted:
Lieber den fehler korrigieren als die Sympthome vertuschen.
Iss aehnliche Liga wie deine Obige Idee ...
Manchmal muss man so kniffe machen ja, aber nur wenn sie wirklich notwendig sind.

Ciao ...
abcschützling
Beiträge: 24
Registriert: 27. Oktober 2009 22:37

Beitrag von abcschützling »

Fuer debug und release kannst aber getrennte einstellungen machen, also auch bei release die lib und bei debug die andere lib linken ...
ich verstehe das nicht so ganz, ich habe mir jetzt eine release und eine debug version erstellt. Wenn ich aber jetzt die debug version mit nur einer lib linke (z.B. nur die QT lib), gibt es den folgenden Fehler:

error LNK2001: Nichtaufgelöstes externes Symbol "bool __cdecl lti::read(class lti::ioHandler &,float &)" (?read@lti@@YA_NAAVioHandler@1@AAM@Z) ...etc.

Er schmeißt mir den Fehler, weil er natürlich bestimmte Codeteile jetzt nicht kennt. Weil rer ja eben die eine Lib nicht kennt und die benötigten headers nicht einbinden kann. Das selbe is es bei der release version ohne die QT teile.

ich stehe jetzt einbisschen auf den Schlauch, was soll ich machen ?

Gruß
abcschützling
Beiträge: 24
Registriert: 27. Oktober 2009 22:37

Beitrag von abcschützling »

Gibt es evtl. bestimmte linker direktiven, um nur stimmte Libs mit den jeweiligen Obj-Dateien zu verlinken ? z.B. Pragma Direktiven oder so was ähnliches...

Gruß
Zuletzt geändert von abcschützling am 25. März 2010 21:40, insgesamt 1-mal geändert.
Curtis Newton
Beiträge: 122
Registriert: 11. Juni 2008 18:39

Beitrag von Curtis Newton »

Sind auch alle Deine libbs und Dein Programm entweder multi- oder singlethreaded?

C.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

um nur stimmte Libs mit den jeweiligen Cpp-Dateien zu verlinken ?
Diese Frage ist ... naja, zeigt das dir das Verstaendniss vom linken noch bissi fehlt. Vielleicht iss nen etwas tiefergehendes tutorial zum compilieren und linken mal gar ned so verkehrt.
mal mit dem gcc und dem linker nen binary haendisch zusammenbauen und nicht so einmal Klick tools verwenden kann durchaus recht hilfreich sein.

Ciao ...
Antworten