Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MafnGamer

importar uma biblioteca C++

Recommended Posts

Certo tenho duas dúvidas a primeira é a seguinte se eu importar uma biblioteca C++ desse jeito

#include "biblioteca.h"

 

todas as funções que tiver em biblioteca.h vão ser executadas?

 

A segunda é:

 

O que é isso?

bool (*ptr_display)(float timeDelta))

Compartilhar este post


Link para o post
Compartilhar em outros sites

MafnGamer,

 

Não quer dizer que serão todas os métodos executados, e sim que estarão disponíveis. Quando se utiliza headers, é como que se estivessemos indicando ao compilador aonde encontrar determinada função.

 

Quanto a segunda dúvida. É um ponteiro para função. Útil em vários casos, por exemplo, quando queremos uma função como parâmetro para outra função. Outra utilidade é o endereçamento em tempo de execução de funções de uma DLL (acho que se chama assim), quando utilizamos a API para "pegar" o endereço de uma função em uma DLL no momento que estiver sendo executado. Útil quando não queremos recompilar todo um programa por ter alterado uma única função de uma biblioteca.

 

Veja este fragmento retirado da Wikipédia, exemplifica o que comentei:

 

 

Usando ligação explícita em tempo de execução

Os exemplos a seguir mostram exemplos de como usar o carregamento em tempo de execução e auxílios de ligação usando bindings específicas das linguagens para a API WIN32.

  • Microsoft Visual Basic
 Option Explicit Declare Function SomaNumeros Lib "Exemplo.dll" _  (ByVal a As Double, ByVal b As Double) As Double  Sub Main() Dim Resultado As Double Resultado = SomaNumeros(1, 2) Debug.Print "O resultado é: " & Resultado End Sub
  • C e C++
 #include <windows.h> #include <stdio.h>  // Assinatura da função da DLL typedef double (*importFunction)(double, double);  int main(int argc, char **argv) {        importFunction SomaNumeros;        double resultado;         // Carrega arquivo DLL        HINSTANCE hinstLib = LoadLibrary("Exemplo.dll");        if (hinstLib == NULL) {                printf("ERRO: não foi possível carregar a DLL\n");                return 1;        }         // Obtém o ponteiro da função        SomaNumeros = (importFunction)GetProcAddress(hinstLib, "SomaNumeros");        if (SomaNumeros == NULL) {                printf("ERRO: não foi possível achar a função na DLL\n");                FreeLibrary(hinstLib);                return 1;        }         // Chama função.        resultado = SomaNumeros(1, 2);         // Descarrega arquivo DLL        FreeLibrary(hinstLib);         // Mostra o resultado        printf("O resultado é: %f\n", resultado);         return 0; }

 

Caso tenha ficarado interssado, segue o link da página:

http://pt.wikipedia.org/wiki/DLL#C_e_C.2B.2B

 

Espero ter ajudado, FLW!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, entendi fiquei com essa dúvida por causa que estou usando em um projeto uma biblioteca de um exemplo do livro, mas só que no meu arquivo principal eu não chamo essas funções mas elas entram em ação. Foi essa minha grande dúvida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.