Linker Errors when trying to refactor and use multiple classes.

MotscoudBun

New Member
OP
Newbie
Joined
Nov 18, 2023
Messages
1
Trophies
0
Age
24
XP
27
Country
United Kingdom
Hey all! First time poster, long time lurker.
I've been starting to learn the Nintendo DS development suite and have been rather comfortable with what I've made so far
(A little platformer prototype)
But I'm at the point I want to refactor the code - seperate things into multiple classes.
Tonight I have seperated the player out of main, however I'm getting linker errors.

/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/13.2.0/../../../../arm-none-eabi/bin/ld: main.o: in function `main':
/home/edlyn/nds-examples-20200510/playingaroundextendable/source/main.cpp:126:(.text.startup+0x86): undefined reference to `Character::Character()'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/13.2.0/../../../../arm-none-eabi/bin/ld: /home/edlyn/nds-examples-20200510/playingaroundextendable/source/main.cpp:168:(.text.startup+0xa6): undefined reference to `Character::draw(glImage*)'
/opt/devkitpro/devkitARM/bin/../lib/gcc/arm-none-eabi/13.2.0/../../../../arm-none-eabi/bin/ld: /home/edlyn/nds-examples-20200510/playingaroundextendable/source/main.cpp:134:(.text.startup+0x128): undefined reference to `Character::update(Platform*, int, int, int)'
collect2: error: ld returned 1 exit status

This didn't happen before the refactor, and the majority of the code - has not changed.
I have posted the current version on my github:
Motscoud/NDS-Demo-game/

If anyone can save my sanity, I'll be appreciative, I'm sure it's something small.
 

metroid maniac

An idiot with an opinion
Member
Joined
May 16, 2009
Messages
2,088
Trophies
2
XP
2,634
Country
Functions defined within the body of a class are implicitly inline which means that they won't always be emitted as externally visible symbols.

So just have Character::Character() { ..., void Character::update(Platform platforms[], int num_platforms, int scrollX, int scrollY) { ..., etc inside your .cpp file. You generally shouldn't have a second definition of the same class inside the .cpp file anyway.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    K3Nv2 @ K3Nv2: Lol rappers still promoting crypto