2012-04-17 11 views
7

Intento crear mi aplicación multiproyecto en Visuas C++ 10 en modo de lanzamiento.
Aparece el siguiente error de enlace:
2> Todas las salidas están actualizadas. 2> PidAppLib.lib (ThreadWin32.obj): error LNK2011: objeto precompilado no vinculado en; la imagen no se puede ejecutar
2> C: \ infinite_memories_svn \ projects \ SW \ NewPidTools \ PidWriter \ Release \ PidLabler.exe: error grave LNK1120: 1 de externos sin resolver
2>
2> compilación falló.
Visual C++: no puedo ver qué falta externa

¿Cómo puedo saber qué objeto no está resuelto?
ThreadWin32.obj es lib externo que se descargó de internet.

+0

En la depuración funciona ... Supongo que el problema es con objeto precompilado, pero no sé qué es –

+0

¿Ha intentado 'Rebuild all'? (Lo siento, sé que es bastante básico, pero nunca se sabe) – MiMo

+0

¿Puedes verificar la configuración de tu biblioteca y asegurarte de que está configurada para su publicación de manera adecuada? Me encontré configurando Debug para que funcione el código, y luego olvidé cambiar la versión también. –

Respuesta

6

Ok.
He resuelto el problema.
Tengo 2 bibliotecas, digamos a.lib y b.lib, y project, c. a.lib usa b.lib así que en las dependencias de bibliotecario de a.lib agregué b.lib, c usa a.lib así que agregué a dependencias.
Funciona en la depuración pero en la versión también debería agregar b.lib a las dependencias de c. Extraño pero resolvió el problema

+0

Este enlace da la mejor explicación sobre el problema [Bits de programación] (http://progbits.blogspot.in/) – MLS

3

Tuve este error en un proyecto grande que estaba refactorizando. Durante el proceso de refactorización ocasionalmente compilaba archivos fuente individuales para verificar los cambios que había hecho sin tener que construir todo el proyecto. Dependiendo de la configuración de su proyecto, esto puede dar como resultado que los archivos .obj se envíen a un directorio diferente al que normalmente se generarían cuando crea el proyecto. En mi caso, los archivos .obj para los archivos fuente compilados manualmente se imprimieron en el directorio de código fuente en lugar del directorio de compilación intermedio. Un efecto secundario de esto parecía ser que al compilar todo el proyecto, los archivos fuente que se habían compilado manualmente no se podían volver a compilar aunque hubiera otros cambios en otros lugares (como un cambio que requería recompilar el encabezado precompilado) archivo).

La solución para mí fue eliminar manualmente todos los archivos .obj generados mediante la compilación manual de archivos fuente individuales. Dependiendo de la configuración del proyecto, ejecutar Clean en el proyecto también podría funcionar.

+0

De hecho, Limpiar/Reconstruir todo solucionó este problema para mí. – aquirdturtle

Cuestiones relacionadas