1. ¿Qué es una biblioteca de conexión estática (LIB) y qué es una DLL de biblioteca de enlace dinámico? Tanto las bibliotecas de enlace estático como las dinámicas comparten código, ambas en formato binario
2. La diferencia entre la LIB de la biblioteca de enlaces estáticos y la DLL de la biblioteca de enlaces dinámicos Si usas una biblioteca enlazada estáticamente, todas las instrucciones de la biblioteca se incluyen directamente en el archivo EXE resultante. La biblioteca dinámica de enlace dinámico no tiene que incluirse en el archivo EXE final, que puede ser referenciado y descargado "dinámicamente" cuando se ejecuta el archivo EXE. Otra diferencia es que una biblioteca de enlaces estáticos ya no puede contener otras bibliotecas de enlaces dinámicas o estáticas, mientras que una biblioteca de enlaces dinámicos puede contener otras bibliotecas de enlaces dinámicas o estáticas.
3. Método de llamada a biblioteca de enlaces estática: Sobrevivamos para generar un archivo de liberación:
VS2017--> Crear un nuevo proyecto-->escritorio de Windows--> biblioteca estática, el nombre del proyecto es Libtest
Nuevo functem.h y functem.cpp
functem.h:
#pragma una vez #include "stdafx.h" #ifndef _functem_H #define _functem_H int functem(int a, int b); #endif
functem.cpp:
#include "functem.h" #include "stdafx.h"
Función int (int A, Int B)
{ devolver a + b;
} Luego genera el proyecto, y habrá dos archivos, Libtest.lib y Libtest.pdb, en el directorio Debug
Al llamar, se requieren tres pasos:
1. Copiar Libtest.lib y functem.h al directorio del llamante; como se muestra en la figura siguiente:
2. Añadir #include "functem.h" encima del archivo cpp que llama
3. Añadir #pragma comentario (lib, "Libtest.lib") encima del archivo cpp que llama
Como se muestra en la figura anterior, la llamada ha sido exitosa.
4. Método de llamada a biblioteca de enlaces dinámicos: Crea un nuevo proyecto - > biblioteca de enlaces dinámicos con el nombre de proyecto Dlltest
Crea un nuevo Dlltest.h:
#pragma una vez #ifndef __CDLL_H__ #define __CDLL_H__ extern "C" int _declspec(dllexport) add(int x, int y); #endif
Dlltest.cpp:
#include "stdafx.h" #include "Dlltest.h" int add (int x, int y)
{ devolver x + y;
} Genera el proyecto, en el directorio Debug hay:
Proceso de llamada:
1. Copiar Dlltest.dll, Dlltest.lib y Dlltest.h y copiarlos al directorio del llamante; como se muestra en la figura siguiente:
PD: Aquí, de hecho, Dlltest.lib solo se usa al compilar el enlace del compilador, así que después de generar el programa, no puedes incluir el archivo lib, solo el archivo dll, y el uso real es el archivo dll. En resumen, los tres archivos deben ser copiados, pero se utilizan .h y .lib para compilar enlaces, y solo .dll deben colocarse en el directorio generado final.
2. Añadir #include "Dlltest.h" encima del archivo cpp llamado
3. Añadir #pragma comentario (lib, "Dlltest.lib") sobre el archivo cpp que llama
¡La llamada es exitosa! --------------------- Autor: Bird Fuente: CSDN Original: https://blog.csdn.net/wcc27857285/article/details/84615891 Aviso de derechos de autor: Este artículo es un artículo original del bloguero, ¡por favor adjunta el enlace a la entrada del blog para reimprimirlo!
|