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:
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?
Pergunta
Cristiano B.
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:
Biblioteca: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
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.