Ir para conteúdo
Fórum Script Brasil

Cristiano B.

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Cristiano B.

Cristiano B.'s Achievements

0

Reputação

  1. 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?
×
×
  • Criar Novo...