Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida com biblioteca dinamica


Cristiano B.

Pergunta

Boa tarde, estou desenvolvendo um pequeno algoritmo, onde o programa carrega uma biblioteca dinamica (.so linux, .dll windows), chama a função run() desta biblioteca, passando como parametro da função, um ponteiro de uma função desse programa principal, para que a biblioteca possa utiliza-la, como em:

Programa principal:

int auxiliar(){
printf("testeeeee");
return 0;
}

int main(){
...
module = dlopen("teste.so", RTLD_LAZY);
run_func = dlsym(module, "run");

pthread_t thread;
pthread_create(&thread, NULL,runfunc, &auxiliar);
pthread_join(thread, NULL);
...
}
Biblioteca:
typedef int (*PFUNC_AUX)();
void run(PFUNC_AUX funcao_auxiliar)
{
[indent]funcao_auxiliar();[/indent]
}

O programa começa executando corretamente, consegue chamar a função da biblioteca, porém quando a biblioteca vai chamar a função que foi passada via ponteiro, o erro "Falha de segmentação" ocorre.

Eu acho que é pelo fato da função do ponteiro não estar no módulo, e o Linux não permitiria a biblioteca acessar algo que não foi alocado por ela, como medida de segurança.

alguém saberia de uma solução pra passar uma função auxiliar para a biblioteca, ou não é possivel?

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...