Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [C++] Linkerproblem (https://www.delphipraxis.net/92096-%5Bc-%5D-linkerproblem.html)

Matze 14. Mai 2007 14:57


[C++] Linkerproblem
 
Hi,

gestern ließ sich mein Projekt noch einwandfrei kompilieren, doch heute nicht mehr. Ich musste erneut einstellen, dass die LIBCMTD.lib beim Linken ignoriert werden soll, doch erhalte ich nun diese Fehler:

Zitat:

Linking...
tiny_snake.obj : error LNK2019: unresolved external symbol "public: void __thiscall cl_snake::paint_head(void)" (?paint_head@cl_snake@@QAEXXZ) referenced in function _main
tiny_snake.obj : error LNK2019: unresolved external symbol "public: void __thiscall cl_map::print_map_a_star(int)" (?print_map_a_star@cl_map@@QAEXH@Z) referenced in function _main
tiny_snake.obj : error LNK2019: unresolved external symbol "public: void __thiscall cl_snake::paint_snake(bool)" (?paint_snake@cl_snake@@QAEX_N@Z) referenced in function _main
tiny_snake.obj : error LNK2019: unresolved external symbol "public: void __thiscall cl_snake::move(void)" (?move@cl_snake@@QAEXXZ) referenced in function _main
tiny_snake.obj : error LNK2019: unresolved external symbol "char __cdecl a_star(class cl_map *,class cl_food *,class cl_snake *,int,int,bool)" (?a_star@@YADPAVcl_map@@PAVcl_food@@PAVcl_snake@@H H_N@Z) referenced in function _main
tiny_snake.obj : error LNK2019: unresolved external symbol "public: void __thiscall cl_snake::set_direction(char)" (?set_direction@cl_snake@@QAEXD@Z) referenced in function _main
tiny_snake.obj : error LNK2019: unresolved external symbol "public: void __thiscall cl_snake::initialize(void)" (?initialize@cl_snake@@QAEXXZ) referenced in function _main
tiny_snake.obj : error LNK2019: unresolved external symbol "public: void __thiscall cl_map::paint_map(void)" (?paint_map@cl_map@@QAEXXZ) referenced in function _main
tiny_snake.obj : error LNK2019: unresolved external symbol "public: __thiscall cl_snake::cl_snake(int,class cl_map *,class cl_food *,bool)" (??0cl_snake@@QAE@HPAVcl_map@@PAVcl_food@@_N@Z) referenced in function _main
tiny_snake.obj : error LNK2019: unresolved external symbol "public: __thiscall cl_food::cl_food(class cl_map *)" (??0cl_food@@QAE@PAVcl_map@@@Z) referenced in function _main
tiny_snake.obj : error LNK2019: unresolved external symbol "public: __thiscall cl_map::cl_map(void)" (??0cl_map@@QAE@XZ) referenced in function _main
tiny_snake.obj : error LNK2019: unresolved external symbol "public: __thiscall cl_snake::~cl_snake(void)" (??1cl_snake@@QAE@XZ) referenced in function "public: void * __thiscall cl_snake::`scalar deleting destructor'(unsigned int)" (??_Gcl_snake@@QAEPAXI@Z)
tiny_snake.obj : error LNK2019: unresolved external symbol "public: __thiscall cl_map::~cl_map(void)" (??1cl_map@@QAE@XZ) referenced in function "public: void * __thiscall cl_map::`scalar deleting destructor'(unsigned int)" (??_Gcl_map@@QAEPAXI@Z)
tiny_snake.obj : error LNK2019: unresolved external symbol "public: __thiscall cl_food::~cl_food(void)" (??1cl_food@@QAE@XZ) referenced in function "public: void * __thiscall cl_food::`scalar deleting destructor'(unsigned int)" (??_Gcl_food@@QAEPAXI@Z)
.\Debug/tiny_snake.exe : fatal error LNK1120: 14 unresolved externals
Build log was saved at "file://d:\Eigene Dateien\FHTE\Vorlesungen\Informatik 1\Workspace\tiny_snake\Debug\BuildLog.htm"
tiny_snake - 15 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Was bedeutet das denn? Beim Linker musste ich sonst nichts einstellen.
Und wie kann es sein, dass meine Projekteinstellungen verloren gegangen sind, die müsste es doch irgendwo speichern? :(

Edit: Auch Dinge wie @@QAEPAXI@Z sagen mir überhaupt nichts.

ste_ett 14. Mai 2007 15:12

Re: [C++] Linkerproblem
 
Durch das Ignorieren der Datei "LIBCMTD.lib", die alle Funktionen bereitstellt, fehlen dem Linker ein paar Funktionen. :)

hoika 14. Mai 2007 15:18

Re: [C++] Linkerproblem
 
Hallo,

du musst die Klasse mitlinken,
in der cl_snake definiert ist.
Gugg mal im MakeFile.

das @dd@2233 sind c++-Dekorierer,
sie zeigen die Anzahl und Art der Parameter
einer Funktion an (somit können Funktionen überladen werden).


Heiko

Matze 14. Mai 2007 15:27

Re: [C++] Linkerproblem
 
Zitat:

Zitat von ste_ett
Durch das Ignorieren der Datei "LIBCMTD.lib", die alle Funktionen bereitstellt, fehlen dem Linker ein paar Funktionen. :)

Die muss ich ignorieren, da einige Funktionen sonst mehrfach definiert sind. Das muss schon so sein und ging auch immer. ;)

Wie muss ich die Klasse mitlinken? Bisher habe ich die zugehörigen Headerdateien lediglich in der StdAfx.h eingebunden, was immer funktioniert hat. Mehr als die oben genannte Library musste ich in den Projekteinstellungen nicht ändern.

Matze 14. Mai 2007 20:44

Re: [C++] Linkerproblem
 
Ich habe soeben gemerkt, dass es mir wieder die ganzen selbst erstellten *.cpp und *.h Dateien aus dem Solution Explorer entfernt hat, wieso auch immer. :(

Nachdem ich diese manuell hinzugefügt habe, geht es nun wieder, fragt sich nur wie lange. Das ist vermutlich auch das, was du, Heiko, gemeint hast.

Danke ihr beiden.

PS: Aber die Fehlerbeschreibung könnte wirklich etwas aussagekräftiger sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz