2011-03-21 17 views
8

Jak sprawdzić, w jakiej bibliotece środowiska wykonawczego jest połączona biblioteka statyczna (.lib) w systemie Windows?Sprawdzanie CRT używanego w bibliotece (.lib)

Mam kompilacji mojego projektu z/MDD i przypuszczam bibliotekę mam łączący się używa/MTD wielowątkowych Debug

Error 7 error LNK2005: "public: __thiscall std::_Lockit::~_Lockit(void)" ([email protected]@@[email protected]) already defined in libcpmtd.lib(xlock.obj) C:\...\msvcprtd.lib(MSVCP100D.dll) 

LIBCPMTD.LIB = wielowątkowych, link statyczny

Wiem, że istnieje opcja /NODEFAULTLIB:"libcpmtd.lib", której próbowałem i udało mi się, ale wolałbym tego uniknąć.

Odpowiedz

5

udało mi się rozwiązać ten problem w następujący sposób

> dumpbin /DIRECTIVES C:\..\ThirdParty\tidy\windows\lib\libtidy 
.lib 
Microsoft (R) COFF/PE Dumper Version 10.00.40219.01 
Copyright (C) Microsoft Corporation. All rights reserved. 


Dump of file C:\..\ThirdParty\tidy\windows\lib\libtidy.lib 

File Type: LIBRARY 

    Linker Directives 
    ----------------- 
    /DEFAULTLIB:"LIBCMT" 
    /DEFAULTLIB:"OLDNAMES" 
... 

Nadszedł Cleary linkami do MT. Przekompilowałem bibliotekę za pomocą/MDd i połączono ją dobrze.

0

Od MSVPRTD.LIB is the importlib of the dynamic link library CRT, podczas jawnie poproszony o link do CRT statycznie, coś wydaje się tak z łańcucha build.

Możesz sprawdzić wizualnie plik projektu pod kątem sprzeczności.

+0

Projekt, który próbuję skompilować, używa/MDd, które jest poprawnym ustawieniem. Coś, do czego próbuję się podłączyć, to użycie/MT (d) statyczne lub czego nie. W jaki sposób program Visual Studio 2010 pomaga w wykryciu, z której biblioteki, do której się łączę, występuje konflikt CRT? Czy nie ma opcji ręcznego sprawdzania wszystkich plików projektu? –