Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C++] Undefined reference to... (IDE:codeblocks)

Pagina: 1
Acties:
  • 2.295 views sinds 30-01-2008
  • Reageer

  • Speedsmile
  • Registratie: Juni 2004
  • Laatst online: 21:57
Hallo, ik heb hier een vervelend probleem wat me al een aantal uren irriteert, google en mensen om me heen met wat meer programmeer ervaring bieden geen soelaas.

Ik ben nog niet zo lang bezig met c, maar in een ander programma lukte dit eigenlijk perfect dus snap er vrij weinig van. Er kan toch niet zo veel fout zitten in die paar programma regels....Het probleem zit hem in het feit dat zo snel ik een functie oproep die netjes in een header staat enz, ik de 'Undefined reference to...' foutmelding krijg.


main.cpp


C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <cmath>
#include <fstream>
#include "functions.h"
using namespace std;

int main()
{
    cout <<"This program calculates time respone of filter with input u and output y,"<<endl;
    double uk;
    uk=funx2(4.0);
    cout << "Program finished" << endl;
    return 0;
}




funinput.cpp

C++:
1
2
3
4
5
6
7
//Mathematical function f(x)
#include "functions.h"

double funx2(double x)
{double f=0.10*x*x*x-x*x;
return f;
}




functions.h

C++:
1
2
//Header file
double funx2(double x);





Nevermind het commetaar, maar hij verbijt zich dus telkens op het feit dat ik uk=funx2(4.0); oproep, laat ik deze weg dan verdwijnt het probleem. Letterlijke codeblocks error als volgt:

obj\Debug\main.o:main.cpp:(.text+0x158):: undefined reference to `funx2(double)'
:: === Build finished: 1 errors, 0 warnings ===


Iemand enig idee, dit is echt te simpel voor woorden en lukte me voorheen zonder problemen.. :(

[ Voor 4% gewijzigd door een moderator op 18-09-2007 17:04 . Reden: small-tags weggesloopt :P ]

If good's on the left, then I'm sticking to the right.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Als eerst: gebruik [rml][ code=c++]...[ /code][/rml] tags voor betere leesbaarheid en c++ code highlighting :)

.edit: aan je code lijkt niets mis, wordt alles ook wel goed meegecompiled en gelinked? Dus funinput.cpp óók?

[ Voor 48% gewijzigd door .oisyn op 18-09-2007 17:02 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • _Squatt_
  • Registratie: Oktober 2000
  • Niet online
Weet je zeker dat funinput.cpp ook wordt gecompileerd, en dat de resulterende object file wordt meegelinkt?

offtopic:
Zet je code in [ code][ /code] blocks, dat is een stuk leesbaarder (en blijft je indentation behouden).

"He took a duck in the face at two hundred and fifty knots."


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
funinput.cpp aan je projekt toevoegen? Misschien iets met C en C++ name mangling?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 28-11 09:35

leuk_he

1. Controleer de kabel!

Ik heb effe je code gecompileerd en er gaat bij mij niks fout bij het linken.

Ik denk dat je funinput.o /obj niet goed in je linker/project hebt hangen.

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


  • Speedsmile
  • Registratie: Juni 2004
  • Laatst online: 21:57
Ah bedankt voor de ubersnelle reacties, ik had inderdaad al zon vermoeden dat het niet aan de code zelf lag na 2 uur rotzooien en scheel kijken/vergelijken met ander project. Maar hoe controleer ik dat linken zelf, gezien codeblocks dat op het moment afhandeld, funinput zit al in project.

Daarnaast, ik kan ook nog een build priority aangeven in codeblocks, wat is hiervoor de vuistregel/nut?

BTW, het is waarschijnlijk een ubernoob question maar zou iemand in 2 regels uit kunnen leggen hoe dat linken in zijn werk gaat/precies is?

[ Voor 11% gewijzigd door Speedsmile op 18-09-2007 17:29 ]

If good's on the left, then I'm sticking to the right.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Het linken is simpel gezegd het samenvoegen van de afzonderlijk gecompileerde object files naar een enkele binary, waarbij onderlinge referenties tussen de verschillende object files aan elkaar worden geknoopt.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Speedsmile
  • Registratie: Juni 2004
  • Laatst online: 21:57
.oisyn schreef op dinsdag 18 september 2007 @ 17:46:
Het linken is simpel gezegd het samenvoegen van de afzonderlijk gecompileerde object files naar een enkele binary, waarbij onderlinge referenties tussen de verschillende object files aan elkaar worden geknoopt.
Ah oke dan had ik dat toch goed in gedachten, morgen vroeg nog maar eens verder knutselen.

If good's on the left, then I'm sticking to the right.


  • Speedsmile
  • Registratie: Juni 2004
  • Laatst online: 21:57
Vandaag helemaal opnieuw begonnen en alles netjes toegevoegd, dit maal werkte het wel. Ik snap alleen nog steeds niet waar het probleem lag, codeblocks initieerde de linkers niet helemaal goed denk ik. Bedankt voor alle hulp, vooral verificatie van code....

If good's on the left, then I'm sticking to the right.

Pagina: 1