+ Responder
Mostrar resultados 1 a 9 de 9

Tópico: Problemas com #include em C

  1. #1

    Problemas com #include em C

    Ok isto é basicamente um pedido de ajuda porque estou aqui a arrancar cabelos. Eu estou a tentar criar um programa em C e estou para aqui ás voltas a tentar acertar com a porcaria dos #include e simplesmente continua a dar problemas a torto e a direito.

    Em baixo podem encontrar o ficheiro zip com o código fonte para olharem para isto se souberem alguma coisa de C e me conseguirem dizer como consigo arranjar isto, é que já me estou a passar...

    Código Fonte

    Agradeço imenso a quem me conseguir ajudar nisto, é que pura e simplesmente não consigo dar-lhe a volta.

    By the way o código está sob a licença GPL portanto se acharem que o que eu andei para ali a meter pode ser útil façam favor de o utilizar.

    PS: Não, isto não é nenhum trabalho da universidade caso alguém esteja preocupado com a "Honestidade Académica".
    Já o tinha escrito no meu blog e aproveito e coloco-o aqui também. Any help?
    Citar Citar  

  2. #2
    Que erros é que tens???
    Devias usar um Makefile.
    Citar Citar  

  3. #3
    Eu estou a usar um makefile, só não o inclui no zip por esquecimento (o Ajunta é uma IDE bem porreira ).

    Os meus erros são variados dependendo do sitio onde incluo o sqlite3.h. Ora me diz que está á espera de um ( antes do * no menu.c. Ora me diz que o opendb() e closedb() não estão defenidos... É a festa...

    (os includes dão-me dores de cabeça -_-')

    EDIT: aqui está o codigo com makefile

    Pensei até que ao colocar todas as referencias ao sqlite3.h num unico ficheiro e ao inclui-lo quando necessário resolvesse os problemas mas não funcionou. Tentei criar um typedef para não ter de usar o tipo sqlite3 e não funcionou... Sou mesmo n00b mas pronto...
    Última edição de Dextro : 19-03-2007 às 10:55 Razão: mais info
    Citar Citar  

  4. #4
    O teu problema é k estas a usar tipos nao definidos.
    Por exemplo no ficheiro menu.h, a função menu retorna um _Bool e recebe uma cena do tipo sqlite3, o que acontece é que os tipos nao estao definidos.
    Tens que definir os tipos e inclui-los onde os usas.
    Citar Citar  

  5. #5
    alem disso qdo fazes
    Código:
    #include "data.h"
    siginifica que o ficheiro esta na directoria corrente.
    se o que tu pretendes é incluir o ficheiro data.h da directoria include, tens que fazer:

    Código:
    #include "include/data.h"
    Espero que tenha ajudado!
    Citar Citar  

  6. #6
    Citação Resposta Original de LinuxWarrior Ver Resposta
    O teu problema é k estas a usar tipos nao definidos.
    Por exemplo no ficheiro menu.h, a função menu retorna um _Bool e recebe uma cena do tipo sqlite3, o que acontece é que os tipos nao estao definidos.
    Tens que definir os tipos e inclui-los onde os usas.
    Dá-me um exemplo de um tipo não defenido.

    o tipo sqlite3 é definido no ficheiro sqlite3.h (que não é meu mas sim uma biblioteca do sqlite) e o _Bool foi-me ensinado na universidade como sendo um tipo base do C (ANSI). Sou n00b mas não tanto.

    Isso dos includes passou-me ao lado quando fiz as alterações no ajunta... deixa verificar.
    Última edição de Dextro : 19-03-2007 às 11:16
    Citar Citar  

  7. #7
    OK andei a mexer e reduzi o numero de erros mas como eu já ando aqui a tentar combinações sem saber bem o que ando a fazer com os includes não é propriamente bom sinal.

    Anyway aqui fica o codigo modificado e os erros que ainda dá:
    Código Fonte

    data.o: In funtion 'closedb':
    /home/dextro/Projects/cardconsole/src/data.c:40: undefined reference to 'sqlite3_close'
    data.o: In funtion 'opendb':
    /home/dextro/Projects/cardconsole/src/data.c:34: undefined reference to 'sqlite3_open'
    Apesar do ficheiro sqlite3.h estar lá incluído...
    Citar Citar  

  8. #8
    verifica a documentação da tua versao do sqlite e ver se as funções que tas a usar tem a mesma assinatura.
    Citar Citar  

  9. #9
    Citação Resposta Original de LinuxWarrior Ver Resposta
    verifica a documentação da tua versao do sqlite e ver se as funções que tas a usar tem a mesma assinatura.
    Descobri o problema e foi mesmo azelhice minha. Bastou-me adicionar -lsqlite3 ás flags do linker e passou a funcionar. Foi mesmo o facto de eu ser um n00b a usar makefiles.

    Ao menos isto fica aqui para registo, eu pelo menos sei que me fartei de procurar por um problema igual e não encontrei nada

    PS: anyway obrigado por me avisares daquela historia dos includes que me tinha passado ao lado e eu tinha falta de alguns 3 em sqlites

    Citar Citar  

+ Responder

Marcadores

Regras

  • Não pode abrir novos tópicos
  • Não pode colocar mensagens
  • Não pode colocar anexos
  • Não pode editar as suas mensagens

Registe-se no fórum e active o seu registo para deixar de ver este anúncio.