2010-10-16 14 views
34

Heredé una cantidad sustancial de código, incluido un proyecto de estudio visual que se supone que (según lo que puedo decir) compila un archivo .lib. Visual Studio dice "... Generando código ... Creando biblioteca ... Creando archivo de información de navegación ...", y al final, dice que la compilación tuvo éxito. En la carpeta release/debug, tiene un grupo de archivos .obj, pero no tiene un archivo .lib. ¿Qué podría estar perdiendo?Build Succeeded, pero no se crea ningún archivo .lib

Gracias!

Respuesta

47

Abra las Propiedades del proyecto (haga clic derecho en el proyecto en el Explorador de soluciones, seleccione 'Propiedades'). Debajo de 'Bibliotecario', marque 'Archivo de salida' - ahí es donde debería ir la salida.

Si esto se ve bien, intente dir /s *.lib en un subdirectorio apropiado para su proyecto, para ver si puede ubicar la biblioteca de salida por fecha y hora. Si aún no puede encontrarlo, intente una reconstrucción limpia (haga clic con el botón secundario del proyecto, seleccione 'Reconstruir').

Para las DLL, no se crea un archivo .Lib si la DLL no exporta nada para el uso externo. No creo que esto se aplique a las compilaciones de lib estática, pero me aseguraré de que esté exportando algo público desde el código fuente de su proyecto de biblioteca.

+1

Awesomeness. ¡No sé lo que haría sin ustedes chicos! Sí, el problema estaba en Bibliotecario, el desarrollador anterior había codificado la ruta a su directorio personal. Gente tonta. – Jim

+16

"Para archivos DLL, no se crea un archivo .Lib si el archivo DLL no exporta nada para uso externo". - Ese fue mi problema. Perdí mi .lib al volver a configurar un archivo de cabecera y perder mi macro '__declspec (dllexport)'. – ken

+0

¿Por qué tiene que declarar dllexport cuando es una lib estática? –

11

Mi biblioteca estática contiene nada más que dos clases de plantilla, por lo que no tenía un archivo .cpp. Esto provocó que Visual Studio 2015 no generara un archivo .lib. Para resolver esto, hice un archivo huh.cpp que incluye todos los encabezados.

+1

Tuve que agregar un archivo existente a los filtros 'Archivos de cabecera' y 'Archivos de origen' antes de que VS2015 quisiera generar un archivo .lib. – oddRaven

1

Acabo de toparme con este problema también.

Se debe a que se usa una macro no válida en la definición del directorio de salida. En mi caso, fue enter image description here

cuando debería haber sido

enter image description here

tuve que dejar en blanco la ruta completa en la segunda captura de pantalla. Tuve una macro incorrecta. Yo estaba usando MsBuildProjectDir cuando debería haber estado usando MsBuildProjectDirectory. El cuadro de texto de solo lectura mostrará la ruta completa (por ejemplo: C:\Development\blah\blah\blah\) cuando el directorio de salida sea válido. Si el directorio de salida no es válido, obtendrá algo como la primera captura de pantalla.

5

.lib no se generará si se olvida agregar el prefijo __declspec (dllexport) para los métodos.

Cuestiones relacionadas