Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

programa chamando biblioteca estática e dinâmica em 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?

1 resposta
solução!

Oi Alberto, tudo bem?

Irei dar uns exemplos para te ajudar no caminho.

Vamos supor que você tenha as seguintes partes do código:

  1. Código-fonte do programa principal (P): main.c
  2. Código da biblioteca estática (E): libE.c e libE.h
  3. Código da biblioteca dinâmica (D): 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.