(C++) 'consoleInitDefault' was not declared in this scope
February 24, 2017 · View on GitHub
(C++) 'consoleInitDefault' was not declared in this scope
Operating system(s):
Nintendo DS
Ubuntu 10.04 LTS Lucid Lynx
command line
Qt Creator 2.0.0
Console application
- G++ 4.4.1
Libraries used:
Libnds: version 1.4.7
Project file
#------------------------------------------------- # # Project created by QtCreator 2010-10-07T22:25:11 # #------------------------------------------------- INCLUDEPATH += /opt/devkitpro/libnds-1.4.7/include INCLUDEPATH += /opt/devkitpro/devkitARM/arm-eabi/include DEFINES += ARM9 TARGET = CppDsExample1 CONFIG += console CONFIG -= app_bundle TEMPLATE = app SOURCES += main.cpp OTHER_FILES += \ makefile_supplied.txt
main.cpp
////////////////////////////////////////////////////////////////////// // Demo1 ARM9 Code - Based on an example shipped with NDSLIB. // Chris Double (chris.double@double.co.nz) ////////////////////////////////////////////////////////////////////// //From http://double.co.nz/nintendo_ds/nds_develop1.html #include <nds.h> #include <nds/registers_alt.h> #include <stdio.h> int main(void) { // Use the touch screen for output videoSetMode(0); videoSetModeSub(MODE_0_2D | DISPLAY_BG0_ACTIVE); vramSetBankC(VRAM_C_SUB_BG); SUB_BG0_CR = BG_MAP_BASE(31); // Set the colour of the font to White. BG_PALETTE_SUB[255] = RGB15(31,31,31); consoleInitDefault((u16*)SCREEN_BASE_BLOCK_SUB(31), (u16*)CHAR_BASE_BLOCK_SUB(0), 16); printf("\n\n\tHello World!\n"); while(1) { touchPosition touchXY = touchReadXY(); printf("\x1b[10;0H"); printf("Touch x = %d \n", touchXY.px); printf("Touch y = %d \n", touchXY.py); } return 0; }
Solution
Due to new version architecture, replace the following line:
consoleInitDefault((u16*)SCREEN_BASE_BLOCK_SUB(31), (u16*)CHAR_BASE_BLOCK_SUB(0), 16);
Replace it with this line:
consoleInit(0,1, BgType_Text4bpp, BgSize_T_256x256, 0, 6, false, true);
Now an undefined reference to 'consoleInit' link error occurs.
How the solution was found
Searching all Libnds files, no function called 'consoleInitDefault' could be found. In '/opt/devkitpro/libnds-1.4.7/include/nds/arm9/console.h' the function called 'consoleInit' was found. Replacing 'consoleInitDefault' by 'consoleInit' resulted in the followinng error:
error: cannot convert 'u16*' to 'PrintConsole*' for argument '1' to 'PrintConsole* consoleInit(PrintConsole*, int, BgType, BgSize, int, int, bool, bool)'
So, after checking for consoleInit's function declaration, I see that I have to pass NULL as a first argument for a default consoleInit:
consoleInit(0,(u16*)SCREEN_BASE_BLOCK_SUB(31), (u16*)CHAR_BASE_BLOCK_SUB(0), 16);
Still no good, so search the web for an example use:
consoleInit(0,1, BgType_Text4bpp, BgSize_T_256x256, 0, 6, false, true);
Fixed, although now an undefined reference to 'consoleInit' link error occurs.