Teriam um exemplo de um programa 'P' chamando biblioteca estática 'E' e dinâmica 'D' na linguagem de programação C usando Visual Studio Community 2022?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Teriam um exemplo de um programa 'P' chamando biblioteca estática 'E' e dinâmica 'D' na linguagem de programação C usando Visual Studio Community 2022?
Oi Alberto, tudo bem?
Irei dar uns exemplos para te ajudar no caminho.
Vamos supor que você tenha as seguintes partes do código:
main.clibE.c e libE.hlibD.c e libD.hAqui está o conteúdo de cada um desses arquivos:
1. main.c
#include <stdio.h>
#include "libE.h"
#include "libD.h"
#include <Windows.h>
int main() {
// Chamando função da biblioteca estática
printf("Chamando biblioteca estatica:\n");
int resultE = addE(5, 3);
printf("Resultado da biblioteca estatica: %d\n", resultE);
// Carregando biblioteca dinâmica
HMODULE libD = LoadLibrary("libD.dll");
if (libD != NULL) {
// Chamando função da biblioteca dinâmica
printf("\nChamando biblioteca dinamica:\n");
typedef int(*AddDFunction)(int, int);
AddDFunction addD = (AddDFunction)GetProcAddress(libD, "addD");
if (addD != NULL) {
int resultD = addD(5, 3);
printf("Resultado da biblioteca dinamica: %d\n", resultD);
} else {
printf("Erro ao obter endereco da funcao na biblioteca dinamica.\n");
}
// Fechando biblioteca dinâmica
FreeLibrary(libD);
} else {
printf("Erro ao carregar biblioteca dinamica.\n");
}
return 0;
}
2. libE.h
#ifndef LIBE_H
#define LIBE_H
int addE(int a, int b);
#endif // LIBE_H
3. libE.c
#include "libE.h"
int addE(int a, int b) {
return a + b;
}
4. libD.h
#ifndef LIBD_H
#define LIBD_H
#ifdef _MSC_VER
#define EXPORT __declspec(dllexport)
#else
#define EXPORT
#endif
EXPORT int addD(int a, int b);
#endif // LIBD_H
5. libD.c
#include "libD.h"
int addD(int a, int b) {
return a + b;
}
Pra compilar e executar esse exemplo no Visual Studio Community 2022, você precisará seguir os passos apropriados para configurar seu projeto para incluir as bibliotecas estática e dinâmica. Lembre de configurar corretamente as propriedades do projeto para incluir os caminhos corretos para os arquivos de cabeçalho e bibliotecas.
Um abraço e bons estudos.