visual una studio proyecto librerias libreria dev crear como clases biblioteca agregar visual-c++ linker exp

visual-c++ - una - crear dll en c# visual studio 2017



¿Por qué mi proyecto de creación de Visual C++.exe crea archivos.lib y.exp? (2)

Esto es normal si una o más funciones se exportan desde su ejecutable.

Tengo una solución que consta de 3 proyectos. Una es una biblioteca estática y dos son archivos .exe basados ​​en consola que dependen de esta biblioteca y se vinculan con ella. Sus ajustes parecen ser idénticos. Yo construyo uno de ellos:

1> ------ Construcción iniciada: Proyecto: masksample, Configuración: Debug Win32 ------
1> compilando ...
1> stdafx.cpp
1> compilando ...
1> masksample.cpp
1> Compilando el manifiesto a los recursos ...
1> Enlace ...
1> ENLACE: C: / Users / DarekSz / Praca / cci / Debug / masksample.exe no encontrado o no creado por el último enlace incremental; realizando enlace completo
1> Incrustar manifiesto ...
1> masksample - 0 error (s), 0 advertencia (s)
========== Compilación: 1 correcta, 0 fallida, 1 actualizada, 0 omitida ==========

Luego voy a construir el otro:

1> ------ Construcción iniciada: Proyecto: calibsample, Configuración: Debug Win32 ------
1> compilando ...
1> stdafx.cpp
1> compilando ...
1> calibsample.cpp
1> Compilando el manifiesto a los recursos ...
1> Enlace ...
1> ENLACE: C: / Users / DarekSz / Praca / cci / Debug / calibsample.exe no encontrado o no creado por el último enlace incremental; realizando enlace completo
1> Creación de la biblioteca C: / Users / DarekSz / Praca / cci / Debug / calibsample.lib y objeto C: / Users / DarekSz / Praca / cci / Debug / calibsample.exp
1> Incrustar manifiesto ...
1> calibsample - 0 error (s), 0 advertencia (s)
========== Compilación: 1 correcta, 0 fallida, 1 actualizada, 0 omitida ==========

¿Por qué el enlazador crea los archivos .lib y .exp esta vez? ¿Hay alguna opción para activar y desactivar esto que activé sin saberlo?


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

BTW no soy un gurú de c ++ ...

En mi solución tengo 3 proyectos. Uno es un proyecto dll, los otros son dos proyectos de aplicaciones Win32 que hacen referencia al proyecto dll.

Por lo general, con su dll construido, también tiene otros archivos generados (.exp, .lib) también para los proyectos NON dll. Esto puede ocurrir cuando incluye un archivo .h del proyecto dll en el proyecto de la aplicación, que contiene una clase marcada con __declspec (dllexport).

Para evitar que el enlazador piense que está intentando incluir algunos archivos .h para "exportar", use una expresión condicional para definir su macro _declspec.

Ejemplo:

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

Ok, digamos que tienes un MyClass.h en tu proyecto dll.

en su archivo .h podría tener ahora:

class DllExport MyClass { ... }

Cuando desee incluir este archivo .h en un proyecto NO Dll, simplemente debe definir la condición _DO_NOT_EXPORT

#define _DO_NOT_EXPORT #include "MyClass.h"