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?
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.c
libE.c
e libE.h
libD.c
e libD.h
Aqui 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.