Pregunta

Estoy desarrollando aplicaciones utilizando VC ++ 6.

Tengo una tercera parte de DLL. Esta biblioteca compilado como DLL multiproceso (/ MD) y mi solicitud también. Pero no logro enlace:

LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /INCREMENTAL:NO specification
msvcprtd.lib(MSVCP60D.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (??1?$basic_strin
g@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) already defined in XXXApi.lib(CODbg.obj)
msvcprtd.lib(MSVCP60D.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<c
har,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z) already defined in XXXApi.lib(Dictionary.obj)
../../Exes/win2k3_oracle11/XXX.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.

aquí veo que a pesar de que tanto tercera biblioteca y mi código compilado como / MD , no entrar en conflicto con el nuevo Beining edad / iostream utilizado.

¿Hay manera de determinar lo que iostream biblioteca viejo / nuevo es utilizado por la biblioteca 3 ª parte?

UPD: La tercera parte lib es estático y no dinámico como pensaba antes. El lib se compila / MD. Dependency Walker trabaja con el avance de las DLL y no el que las liberaciones.

¿Fue útil?

Solución

Existe una dependencia Walker, si no conoce esta herramienta. http://dependencywalker.com/

Arrastrar y soltar el archivo DLL o EXE en la ventana principal. Se le mostrará todas las dependencias.

Y si desea vincular a una tercera parte de DLL, todo lo que necesita es un .lib hecho de que la DLL. Si usted no tiene que .lib, siempre se puede hacer uno con lib.exe o polib.exe de herramientas pelles c. Polib es más fácil de usar, ya que no es necesario escribir un archivo .def. http://www.smorgasbordet.com/pellesc/

espero que ayude a su pregunta.

Editar:? ¿Tiene el código fuente para el .lib está utilizando

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top