¿Por qué mi Visual C ++ generación de proyecto .exe crear archivos .lib y .exp?

votos
17

Tengo una solución que consta de 3 proyectos. Se trata de una biblioteca estática, y dos son archivos .exe basadas en la consola que dependen de enlace y en contra de esta biblioteca. Sus ajustes parecen ser idénticos. Construyo una de ellas:

1> ------ Build comenzó: Proyecto: masksample, Configuración: Depuración Win32 ------
1> Compilación ...
1> stdafx.cpp
1> Compilación ...
1> masksample.cpp
1> Compilación manifiesta a los recursos ...
1 ...> Vinculación de
1> enlace: C: \ Users \ DarekSz \ Praca \ cci \ Debug \ masksample.exe que no se encuentra o no construido por el último eslabón incrementales; la realización completa de enlace
1> Incorporación de manifiesto ...
1> masksample - 0 Error (s), 0 advertencia (s)
========== construcción: 1 tuvieron éxito, 0 incorrectos, 1 hasta a la fecha, 0 omiten ==========

Después paso a la construcción de la otra:

1> ------ Build comenzó: Proyecto: calibsample, Configuración: Depuración Win32 ------
1> Compilación ...
1> stdafx.cpp
1> Compilación ...
1> calibsample.cpp
1> Compilación manifiesta a los recursos ...
1 ...> Vinculación de
1> enlace: C: \ Users \ DarekSz \ Praca \ cci \ Debug \ calibsample.exe no se encontró o no construido por el último eslabón incrementales; la realización completa de enlace
1> Creación de bibliotecas de C: \ Users \ DarekSz \ Praca \ cci \ Debug \ calibsample.lib y el objeto C: \ Users \ DarekSz \ Praca \ cci \ Debug \ calibsample.exp
1> Incorporación de manifiesto ...
1> calibsample - 0 error (s), 0 de aviso (s)
========== construcción: 1 tuvieron éxito, 0 incorrectos, 1 hasta a la fecha, 0 omiten ==========

¿Por qué el enlazador crear el .lib y archivos .exp este tiempo? ¿Hay alguna opción para convertir esta encendido y apagado que he activado sin saber sobre él?

Publicado el 12/05/2010 a las 15:15
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
3

Esto es normal si una o más funciones es / son exportados desde su ejecutable.

Respondida el 12/05/2010 a las 15:18
fuente por usuario

votos
19

Es un poco tarde, pero, tal vez alguien más podría encontrar útil esta sugerencia.

Por cierto que no soy un gurú c ++ ...

En mi solución tengo 3 proyectos. Se trata de un proyecto DLL, los otros dos proyectos de aplicaciones Win32 que hacen referencia al proyecto DLL.

Por lo general, con su DLL construido, tiene también algunas otras archivo generado (.exp, .lib) también para los proyectos que no son DLL. Esto puede occour cuando se incluye un archivo .h del proyecto DLL, en el proyecto de aplicación, que contiene una clase marcada con __declspec (dllexport).

Para evitar el enlazador piensa que ya está tratando de incluir algunos archivos .h "exportar" utilizar una expresión condicional para definir la macro _declspec.

Ejemplo:

#if defined(_DO_NOT_EXPORT)
#define DllExport  
#else
#define DllExport __declspec(dllexport)
#endif

Ok, digamos que usted tiene un MyClass.h en su proyecto DLL.

en su archivo .h que podría tener ahora:

class DllExport MyClass {
 ...
}

Cuando se quiere incluir este archivo .h en un proyecto DLL NO, usted tiene simplemente para definir la condición _DO_NOT_EXPORT

#define _DO_NOT_EXPORT
#include "MyClass.h"
Respondida el 24/10/2010 a las 10:50
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more