Então, sou novo aqui no fórum e resolvi perguntar porque nenhuma pesquisa no Google que eu tenha feito respondeu à minha dúvida. Antes de qualquer coisa, deixem-me falar do meu ambiente de desenvolvimento. Eu estou criando uma API em Linux para um cliente. Por determinação desse cliente (que é um grande cliente), o desenvolvimento está sendo feito em um Linux OpenSUSE 10.2 e o compilador usado é o GCC 4.1.2. Esses requisitos infelizmente eu não posso mudar.
A minha API vai usar o dlopen para carregar dinâmicamente uma biblioteca. O código é o seguinte:
static void * LoadModule(char *module)
{
if (module == NULL);
{
// Ele sempre entra aqui...
return (NULL);
}
return (dlopen(module, RTLD_LAZY));
}
int main(int argc, char **argv)
{
void *mod;
mod = LoadModule("libminhalib.so");
}
Então, esse código falha, pois a comparação module == NULL sempre dá verdadeiro. Alguém sabe por quê? Isso sempre funcionou antes mas dessa vez não. Assim, se eu remover a comparação a biblioteca é carregada corretamente e eu posso usá-la, mas o teste deveria ter funcionado.
Pergunta
Scirious
Bem, pessoa, tudo bem com vocês?
Então, sou novo aqui no fórum e resolvi perguntar porque nenhuma pesquisa no Google que eu tenha feito respondeu à minha dúvida. Antes de qualquer coisa, deixem-me falar do meu ambiente de desenvolvimento. Eu estou criando uma API em Linux para um cliente. Por determinação desse cliente (que é um grande cliente), o desenvolvimento está sendo feito em um Linux OpenSUSE 10.2 e o compilador usado é o GCC 4.1.2. Esses requisitos infelizmente eu não posso mudar.
A minha API vai usar o dlopen para carregar dinâmicamente uma biblioteca. O código é o seguinte:
Então, esse código falha, pois a comparação module == NULL sempre dá verdadeiro. Alguém sabe por quê? Isso sempre funcionou antes mas dessa vez não. Assim, se eu remover a comparação a biblioteca é carregada corretamente e eu posso usá-la, mas o teste deveria ter funcionado.
Grato pela atenção,
Scirious.
Link para o comentário
Compartilhar em outros sites
3 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.