2011-03-21 34 views
8

¿Cómo puedo verificar a qué biblioteca de tiempo de ejecución se ha asociado una biblioteca estática (.lib) en Windows?Verificación de CRT utilizado en la biblioteca (.lib)

Estoy compilando mi proyecto con/TDM y presumo una biblioteca que estoy ligarse a está utilizando/MTd multiproceso depuración

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 = multiproceso, enlace estático

Sé que hay una opción /NODEFAULTLIB:"libcpmtd.lib" que probé y tuve éxito, pero prefiero evitar eso.

Respuesta

5

que era capaz de solucionar este haciendo lo siguiente

> 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" 
... 

Es vinculación Cleary a MT. Recopilé la lib usando/MDd y enlazó bien.

0

Desde MSVPRTD.LIB is the importlib of the dynamic link library de la CRT, mientras que pidió explícitamente a enlazar con el CRT estáticamente, algo parece mal con su cadena de acumulación.

Es posible que desee verificar visualmente el archivo del proyecto en busca de contradicciones.

+0

El proyecto que intento compilar usa/MDd, que es la configuración correcta. Algo con lo que estoy tratando de vincular es usar/MT (d) static o lo que no. ¿Cómo ayuda Visual Studio 2010 a detectar cuál de las bibliotecas a las que enlazo tiene un CRT en conflicto? ¿No hay opción de inspeccionar manualmente todos los archivos del proyecto? –

Cuestiones relacionadas