1. O que é uma biblioteca de conexão estática (LIB) e o que é uma DLL de biblioteca de link dinâmico? Tanto as bibliotecas de link estático quanto as dinâmicas compartilham código, ambas em formato binário
2. A diferença entre a LIB da biblioteca de links estáticos e a DLL da biblioteca de link dinâmico Se você usar uma biblioteca vinculada estaticamente, todas as instruções da biblioteca são incluídas diretamente no arquivo EXE resultante. A biblioteca dinâmica de link dinâmico não precisa estar incluída no arquivo EXE final, que pode ser referenciado e descarregado "dinamicamente" quando o arquivo EXE for executado. Outra diferença é que uma biblioteca de links estáticos não pode mais conter outras bibliotecas de links dinâmicas ou estáticas, enquanto uma biblioteca de link dinâmico pode conter outras bibliotecas de links dinâmicas ou estáticas.
3. Método de chamada de biblioteca de link estática: Vamos sobreviver para gerar um arquivo de liberação:
VS2017--> Criar um novo projeto-->Windows Desktop--> biblioteca estática, o nome do projeto é Libtest
Novo functem.h e functem.cpp
functem.h:
#pragma uma 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"
Função int(int A, Int B)
{ retorne a + b;
} Depois, gerar o projeto, e haverá dois arquivos, Libtest.lib e Libtest.pdb, no diretório Debug
Ao ligar, são necessários três passos:
1. Copie o Libtest.lib e o functem.h para o diretório do chamador; como mostrado na figura abaixo:
2. Adicione #include "functem.h" acima do arquivo cpp que chama
3. Adicionar #pragma comentário (lib, "Libtest.lib") acima do arquivo cpp que chama
Como mostrado na figura acima, a chamada foi bem-sucedida.
4. Método de chamada de biblioteca de links dinâmicos: Crie um novo projeto - > biblioteca de links dinâmicos com o nome de projeto Dlltest
Crie um novo Dlltest.h:
#pragma uma 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)
{ retorne x + y;
} Gerar o projeto, no diretório Debug há:
Processo de chamada:
1. Copie Dlltest.dll, Dlltest.lib e Dlltest.h e copie para o diretório do chamador; como mostrado na figura abaixo:
PS: Aqui, na verdade, o Dlltest.lib é usado apenas ao compilar o link do compilador, então, depois que o programa é gerado, você não pode incluir o arquivo lib, apenas o arquivo dll, e o uso real é realmente o arquivo dll. Resumindo, todos os três arquivos precisam ser copiados, mas .h e .lib são usados para compilar links, e apenas .dll precisam ser colocados no diretório final gerado.
2. Adicione #include "Dlltest.h" acima do arquivo cpp chamado
3. Adicionar #pragma comentário (lib, "Dlltest.lib") acima do arquivo cpp que chama
A ligação foi bem-sucedida! --------------------- Autor: Bird Fonte: CSDN Original: https://blog.csdn.net/wcc27857285/article/details/84615891 Aviso de Direitos Autorais: Este artigo é um artigo original do blogueiro, por favor, anexe o link do post do blog para reimpressão!
|