Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: + 1 Oculto(s) en 9 Mayo 2016, 01:08 AM

Título: ayuda con problema c++ relocation truncated
Publicado por: + 1 Oculto(s) en 9 Mayo 2016, 01:08 AM
Citarcd 'C:\Users\SM\Documents\NetBeansProjects\Automata'
C:\cygwin64\bin\make.exe -f Makefile CONF=Debug
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory '/cygdrive/c/Users/SM/Documents/NetBeansProjects/Automata'
"/usr/bin/make"  -f nbproject/Makefile-Debug.mk dist/Debug/Cygwin-Windows/automata.exe
make[2]: Entering directory '/cygdrive/c/Users/SM/Documents/NetBeansProjects/Automata'
mkdir -p dist/Debug/Cygwin-Windows
g++     -o dist/Debug/Cygwin-Windows/automata build/Debug/Cygwin-Windows/Cadena.o build/Debug/Cygwin-Windows/main.o
build/Debug/Cygwin-Windows/main.o: In function `main':
/cygdrive/c/Users/SM/Documents/NetBeansProjects/Automata/main.cpp:28: undefined reference to `Cadena::fragmentar(std::string)'
/cygdrive/c/Users/SM/Documents/NetBeansProjects/Automata/main.cpp:28:(.text+0x72): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `Cadena::fragmentar(std::string)'
collect2: error: ld returned 1 exit status
nbproject/Makefile-Debug.mk:63: recipe for target 'dist/Debug/Cygwin-Windows/automata.exe' failed
make[2]: *** [dist/Debug/Cygwin-Windows/automata.exe] Error 1
make[2]: Leaving directory '/cygdrive/c/Users/SM/Documents/NetBeansProjects/Automata'
nbproject/Makefile-Debug.mk:60: recipe for target '.build-conf' failed
make[1]: *** [.build-conf] Error 2
make[1]: Leaving directory '/cygdrive/c/Users/SM/Documents/NetBeansProjects/Automata'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
make: *** [.build-impl] Error 2

ese es el error que me sale


y solo estoy llamando a una funcion desde el main el cual esta en un diferente archivo




archivo Cadena.h
Código (cpp) [Seleccionar]

#ifndef CADENA_H
#define CADENA_H

#include <string>
using namespace std;

class Cadena {
public:
    Cadena();
    string fragmentar(string );
    Cadena(const Cadena& orig);
    virtual ~Cadena();
private:
   

};

#endif /* CADENA_H */



archivo Cadena.cpp
Código (cpp) [Seleccionar]
#include "Cadena.h";
#include <vector>;
# include <iostream>
using namespace std;

Cadena::Cadena() {
}

Cadena::Cadena(const Cadena& orig) {
}

Cadena::~Cadena() {
}

string fragmentar(string texto ){
    int posicion=0;
    string delimitador=" ";
    vector<string> resultado;
    while( ( posicion = texto.find( delimitador ) ) != string::npos ) {
resultado.push_back( texto.substr( 0, posicion ));
texto.erase( 0, posicion + delimitador.length());
}
   
    for(int i=0; i<resultado.size(); i++){
    }
    return "hola";
}


archivo main

Código (cpp) [Seleccionar]

#include <cstdlib>

#include <iostream>
#include <iomanip>

#include "Cadena.h"
using namespace std;

/*
*
*/
int main(int argc, char** argv) {
    std::cout<<"si funciona";
    Cadena cadena;
    string var="comeGalleta";
    string rs=cadena.fragmentar(var);
    return 0;
}




solo es una prueba, es decir la logica del programa esta mal, repito es solo una prueba y al ejecutarlo sale error, pero si es muy sencillo no entiendo como sale error

me podrian ayudar...
Título: Re: ayuda con problema c++ relocation truncated
Publicado por: AlbertoBSD en 18 Mayo 2016, 02:22 AM
Que tsl nunca he programado con netbeans pero veo que usa cygwin...

No te esta reconociendo

Cadena::fragmentar(std::string)

Por eso corta la compilacion. Ahorita que llegue a mi casa lo pruebo.
Título: Re: ayuda con problema c++ relocation truncated
Publicado por: + 1 Oculto(s) en 18 Mayo 2016, 04:07 AM
gracias por probar mi codigo
gracias por la ayuda... estare al tanto de tu respuesta
Título: Re: ayuda con problema c++ relocation truncated
Publicado por: Eternal Idol en 18 Mayo 2016, 05:18 AM
qwery.azc: no hagas doble post por favor.
Título: Re: ayuda con problema c++ relocation truncated
Publicado por: AlbertoBSD en 18 Mayo 2016, 05:33 AM
C:\ejemplos>g++ main.cpp Cadena.cpp
Cadena.cpp:1:20: warning: extra tokens at end of #include directive
#include "Cadena.h";
                    ^
Cadena.cpp:2:18: warning: extra tokens at end of #include directive
#include <vector>;


Me marca que tiene dos punto y comas de mas  :rolleyes: :rolleyes: y posteriormente me marca el mismo error que a ti.

C:\ejemplos>g++ main.cpp Cadena.cpp
C:\Users\alberto\AppData\Local\Temp\cc1x9SGg.o:main.cpp:(.text+0x8e): undefined
reference to `Cadena::fragmentar(std::string)'
collect2.exe: error: ld returned 1 exit status


La funcion fragmentar esta definida mas no es parte de la clase

actualmente esta asi:

Código (cpp) [Seleccionar]
string fragmentar(string texto ){
    int posicion=0;
    string delimitador=" ";
    vector<string> resultado;
...


Cuando deberia de estar asi:

Código (cpp) [Seleccionar]
string Cadena::fragmentar(string texto ){
    int posicion=0;
    string delimitador=" ";
    vector<string> resultado;
...


Posterior a eso no ya no marca error en la compilacion.
Título: Re: ayuda con problema c++ relocation truncated
Publicado por: + 1 Oculto(s) en 19 Mayo 2016, 00:40 AM
entonces tengo que declarar asi las funciones en el punto .cpp?
Título: Re: ayuda con problema c++ relocation truncated
Publicado por: AlbertoBSD en 19 Mayo 2016, 01:27 AM
 si te fijas solo se le agrego
Cadena::

Si no, no serian parte de la clase. y tendrias que llamartla sin el punto
asi esta
cadena.fragmentar(var);

tendrias que llamarla

fragmentar(var);

Saludos.
Título: Re: ayuda con problema c++ relocation truncated
Publicado por: + 1 Oculto(s) en 19 Mayo 2016, 01:44 AM
muchas gracias... amigo

yo soy nob en c++, vengo de mi lenguaje nativo "JAVA" y es bastante diferente