Hilfe beim Programmieren eines Editors (undefined reference)
-
Hey @all,
Kann mir bitte jemand helfen, da ich nichtmal ein Fenster zusammenbringe, wegen der "undefined reference", obwohl ich überall die "ncurses.h" eingebuden habe.
Hier mal die Fehlermeldung:
rm -rf *.o g++ -ggdb -Wall config.cpp -c g++ -ggdb -Wall window.cpp -c g++ -ggdb -Wall window.o framework.cpp -c g++: window.o: linker input file unused because linking not done g++ -ggdb -Wall config.o framework.o window.o main.cpp -o myEditor main.cpp: In function `int main(int, char**)': main.cpp:14: warning: unused variable `Framework*fw' framework.o(.text+0xaf): In function `Framework::init()': /home/freeze/myEditor/framework.cpp:21: undefined reference to `initscr' framework.o(.text+0xb4):/home/freeze/myEditor/framework.cpp:23: undefined reference to `has_colors' framework.o(.text+0xbd):/home/freeze/myEditor/framework.cpp:24: undefined reference to `start_color' window.o(.text+0x2c): In function `Window::Window[not-in-charge](int, int, int, int, bool)': /home/freeze/myEditor/window.cpp:6: undefined reference to `newwin' window.o(.text+0x76): In function `Window::Window[in-charge](int, int, int, int, bool)': /home/freeze/myEditor/window.cpp:6: undefined reference to `newwin' window.o(.text+0xbf): In function `Window::addBorder()': /home/freeze/myEditor/window.cpp:15: undefined reference to `box' collect2: ld returned 1 exit status make: *** [myEditor] Error 1
Und hier die betroffenen Dateien
main.cpp#include <iostream> #include <vector> #include <string> #include "window.hpp" #include "framework.hpp" #include <ncurses.h> using namespace std; int main(int argc, char* argv[]) { Framework* fw = new Framework(); // Framework* fw = new Framework(new Window()); return 0; }
framework.cpp:
#include "framework.hpp" Framework::Framework() { init(); } Framework::Framework(Window*& win) { init(); this->window = win; } Framework::Framework(Window* win) { init(); this->window = win; } Framework::~Framework() { } void Framework::init() { initscr(); if(has_colors()) start_color(); }
framework.hpp:
#ifndef FRAMEWORK_HPP #define FRAMEWORK_HPP #include <ncurses.h> #include "window.hpp" class Framework { private: Window* window; void init(); public: Framework(); Framework(Window*&); Framework(Window*); ~Framework(); }; #endif
window.cpp
#include "window.hpp" using namespace std; Window::Window(int x, int y, int width, int height, bool border) { this->window = newwin(x, y, width, height); if(border) addBorder(); } Window::~Window() { } void Window::addBorder() { box(this->window, 0, 0); } WINDOW* Window::get() { return this->window; }
window.hpp
#ifndef WINDOW_HPP #define WINDOW_HPP #include <ncurses.h> class Window { protected: WINDOW* window; public: Window(int x=0, int y=0, int width = 0, int height = 0, bool border = true); ~Window(); void addBorder(); WINDOW* get(); }; #endif
Kann mir mit diesem Problem bitte jemand helfen?
Vielen Dank im Voraus
Lg _freeze_
-
in den headerdateien sind die funktionen nur deklariert. du musst die ncurses bibliothek dann noch dazulinken:
g++ *.cc -o program -W -Wall -ansi -pedantic -lncurses
-
Dieser Thread wurde von Moderator/in davie aus dem Forum C++ in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.