Jump to content
Sign in to follow this  
NunoV.

Problema ao compilar no eclipse (C++)

Recommended Posts

Olá a todos.

Estou a trabalhar no exlipse indigo e onde estou a tentar compilar um programa bastante simples em C++ onde incluo uns ficheiros .h que saqueida net. No menu do Project Explorer, se expandir a secção dos includes, aparece-me lá as funções que estou a chamar, mas quando tento compilar ele dá-me o erro "undefined reference to (função)" em todas as funções incluídas no ficheiro .h.

Podem ver aqui um screenshot do que estou a dizer:

Screen1.jpg

Sabem como posso resolver este problema? Já andei a procura na net e a testar algumas soluções mas não funcionou.

Se precisarem de alguma informação posso por aqui uns screen shots ou informação mais detalhada.

Share this post


Link to post
Share on other sites

Edit:

Incluiste os headers com as declarações das funções mas, ou não compilaste os ficheiros com as definições destas funções, ou não estás a linkar a biblioteca correcta.

Edited by doctore

Share this post


Link to post
Share on other sites

Incluiste o ficheiro no projecto?

são publicos? Se sim, instanciaste o objecto? São static functions?

Edited by review

Share this post


Link to post
Share on other sites

A biblioteca é esta:

https://github.com/nunoalves/BeagleBone_IO_lib

Edit:

Incluiste os headers com as declarações das funções mas, ou não compilaste os ficheiros com as definições destas funções, ou não estás a linkar a biblioteca correcta.

O que fiz foi pegar nesses ficheiro, colocar numa pasta e dizer às propriedades do projecto no eclipse e adicionei essa pasta nos includes.

Depois fiz o programa e para compilar fiz simplesmente "Project->Buil All".

Não compilei previamente a biblioteca. Como o faço?

Incluiste o ficheiro no projecto?

são publicos? Se sim, instanciaste o objecto? São static functions?

Review:

As funções não estão definidas como classes. Tens um exemplo:

#ifndef BEAGLE_HD44780_H_GUARD
#define BEAGLE_HD44780_H_GUARD
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <assert.h>
#include <time.h>
#include "BeagleBone_gpio.h"
void goto_ScreenLine(int line, struct gpioID enabled_gpio[]);
void goto_ScreenLocation(int line, int position,struct gpioID enabled_gpio[]);
unsigned int return_address_in_bitform (unsigned int address, int part);
unsigned int write_character (char character, int part);
void charToScreen(char characterToWrite, struct gpioID enabled_gpio[]);
void initialize_Screen(struct gpioID enabled_gpio[],int selectedPins[]);
void terminate_Screen(struct gpioID enabled_gpio[],int selectedPins[]);
void clear_Screen(struct gpioID enabled_gpio[]);
void enableBlinkingCursor(struct gpioID enabled_gpio[]);
void disableBlinkingCursor(struct gpioID enabled_gpio[]);
void stringToScreen(const char *full_string, struct gpioID enabled_gpio[]);
#endif

Share this post


Link to post
Share on other sites

Ora, tendo em conta que eu nunca compilei nada com c++, no entanto lembro de ter problemas com o build em java e em c#, por estar a usar j1.5 em de vez de j1.6 e a mesma coisa para o c# a compilar para NET3.5

Share this post


Link to post
Share on other sites

@NunoV.

Desculpa a resposta tardia mas esqueci-me por completo do tópico.

Penso que o teu problema resulta do facto de não estares a compilar os ficheiros BeagleBone_gpio.c e BeagleBone_hd44780.c que têm a definição das funções que estás a utilizar. Tu copiaste estes ficheiros para a directoria /home/NunoV/Downloads/include mas os mesmos não estão a ser compilados.

Uma maneira rápida de superares o problema consiste em adicionar estes dois ficheiros ao teu projecto e depois recompilar.

Recordo que não basta simplesmente copiar os ficheiros com a definição das funções (BeagleBone_gpio.c e BeagleBone_hd44780.c) tens mesmo que os adicionar ao teu projecto. Normalmente deve ser algo do género. No eclipse, na tab da esquerda Project Explorer, carregas com o botão direito no nome do projecto e escolhas a opção add existing file, ou algo do género.

Depois de compilares, o eclipse gera, na pasta do projecto, uma nova directoria chamada "build". Verifica se lá dentro se encontram ficheiros com extensão .o. Se encontrares aí os ficheiros BeagleBone_gpio.o e BeagleBone_hd44780.o isso significa que os ficheiros foram compilados.

Share this post


Link to post
Share on other sites

Obg.

Como não consegui fazer com o eclipse, acabei por compilar na linha de comandos. É um bocado mais chato.

Vou tentar dessa maneira e depois dou feedback!



@NunoV.

Desculpa a resposta tardia mas esqueci-me por completo do tópico.

Penso que o teu problema resulta do facto de não estares a compilar os ficheiros BeagleBone_gpio.c e BeagleBone_hd44780.c que têm a definição das funções que estás a utilizar. Tu copiaste estes ficheiros para a directoria /home/NunoV/Downloads/include mas os mesmos não estão a ser compilados.

Uma maneira rápida de superares o problema consiste em adicionar estes dois ficheiros ao teu projecto e depois recompilar.

Recordo que não basta simplesmente copiar os ficheiros com a definição das funções (BeagleBone_gpio.c e BeagleBone_hd44780.c) tens mesmo que os adicionar ao teu projecto. Normalmente deve ser algo do género. No eclipse, na tab da esquerda Project Explorer, carregas com o botão direito no nome do projecto e escolhas a opção add existing file, ou algo do género.

Depois de compilares, o eclipse gera, na pasta do projecto, uma nova directoria chamada "build". Verifica se lá dentro se encontram ficheiros com extensão .o. Se encontrares aí os ficheiros BeagleBone_gpio.o e BeagleBone_hd44780.o isso significa que os ficheiros foram compilados.

Já deu...

Obrigado. Já tinha tentado quase tudo menos incluir lá os ficheiros.

Já tinha percebido que o problema era que o compilador não estava a compilar a biblioteca. Tinha andado à procura nas opções como o fazer mas não encontrei. Pensei que bastasse adicionar a pasta nos "includes" defenido nas propiedades

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.