Entschuldigt die längere Zeit bis zu diesem Post, gab leider nebenbei noch viel zu erledigen.
Nun konnt ich mich aber wieder vor kurzem dem Problem widmen und an der Stelle erstmal:
Vielen Dank für Eure zahlreichen Antworten!!
Habe dann also sofort unter "Eigenschaften" -> "Linker" -> "Eingabe" -> "Standardbibliotheken ignorieren" -> auf "Ja (/NODEFAULTLIB)" gestellt.
Und war anschliessend sehr erfreut, da meine alten Fehler nicht mehr erschienen sind. Dafür 20 neue.
Soweit ich es verstehe, stimmt glaube was nicht mit gewissen Links und mit "graphics.obj".
Muss allerdings dazu sagen dass das Programm an sich funktionsfähig ist, also am Quellcode kanns nicht liegen (Hab des aus dem Internet).
Folgende Fehlerausgabe erhalte ich beim Erstellen:
Code: Alles auswählen
1>------ Erstellen gestartet: Projekt: lcgi_app, Konfiguration: Debug Win32 ------
1>Verknüpfen...
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__RTC_CheckEsp" in Funktion ""void __cdecl draw_field(bool (* const)[64])" ?draw_field@@YAXQAY0EA@_N@Z)".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_Shutdown".
1>main.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__RTC_InitBase".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_clock" in Funktion ""void __cdecl run_ant(bool (* const)[64],struct _Pos)" (?run_ant@@YAXQAY0EA@_NU_Pos@@@Z)".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "@_RTC_CheckStackVars@8" in Funktion ""void __cdecl run_ant(bool (* const)[64],struct _Pos)" (?run_ant@@YAXQAY0EA@_NU_Pos@@@Z)".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__RTC_UninitUse" in Funktion ""void __cdecl run_ant(bool (* const)[64],struct _Pos)" (?run_ant@@YAXQAY0EA@_NU_Pos@@@Z)".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "___security_cookie" in Funktion "_main".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "@__security_check_cookie@4" in Funktion "_main".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__chkstk" in Funktion "_main".
1>lcgi.lib(graphics.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__chkstk".
1>LINK : error LNK2001: Nicht aufgelöstes externes Symbol "_mainCRTStartup".
1>lcgi.lib(graphics.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_strcmp" in Funktion ""protected: virtual void __thiscall MalFenster::initMetaObject(void)" (?initMetaObject@MalFenster@@MAEXXZ)".
1>lcgi.lib(graphics.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z)" in Funktion ""void __cdecl initgraph_(int,char * * const,int,int)" (?initgraph_@@YAXHQAPADHH@Z)".
1>lcgi.lib(graphics.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void __cdecl operator delete(void *)" (??3@YAXPAX@Z)" in Funktion ""public: virtual void * __thiscall QApplication::`scalar deleting destructor'(unsigned int)" (??_GQApplication@@UAEPAXI@Z)".
1>lcgi.lib(graphics.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_atan" in Funktion ""public: __thiscall MalFenster::MalFenster(int,int)" (??0MalFenster@@QAE@HH@Z)".
1>lcgi.lib(graphics.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__fltused".
1>lcgi.lib(graphics.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__exit" in Funktion ""public: void __thiscall MalFenster::readySlot(void)" (?readySlot@MalFenster@@QAEXXZ)".
1>lcgi.lib(graphics.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_sin" in Funktion ""private: void __thiscall MalFenster::paint(void)" (?paint@MalFenster@@AAEXXZ)".
1>lcgi.lib(graphics.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_cos" in Funktion ""private: void __thiscall MalFenster::paint(void)" (?paint@MalFenster@@AAEXXZ)".
1>lcgi.lib(graphics.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__ftol" in Funktion ""private: void __thiscall MalFenster::paint(void)" (?paint@MalFenster@@AAEXXZ)".
1>lcgi.lib(graphics.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__vsprintf" in Funktion ""char __cdecl getcharacter(char *,...)" (?getcharacter@@YADPADZZ)".
1>.\Debug/lcgi_app.exe : fatal error LNK1120: 20 nicht aufgelöste externe Verweise.
Und hier noch der Quellcode falls benötigt (sollt aber wie gesagt, eigentlich richtig sein):
Code: Alles auswählen
/************************************************************************************
* Langtons Ameise
* (C) Copyright 2002, Heiko Köhler
*
* Das Spiel erfand der Informatiker Christopher Langton (Langtons Ameise).
* Das Spiel insgesamt stellt einen zellurären Automaten dar. Dabei handelt
* es sich um ein Gitternetz von Schaltern, die unterschiedlich eingestellt
* werden können. Entscheidend sind aber die Regeln für die Betätigung der
* Schalter, also wie sich die Ameise zu bewegen hat und wie sich die Farben
* der einzelnen Zellen dabei ändern:
*
* -Ist sie auf einer grauen Zelle, macht sie eine 90°-Wendung nach
* links.
* -Ist sie auf einer weiáen Zelle, macht sie eine 90°-Wendung nach
* rechts.
* -Beim Übergang zur nächsten Zelle ändert diejenige, auf der sie
* gerade ist, ihre Farbe von Weiß in Schwarz oder umgekehrt.
*
* Langtons Ameise wurde veröffentlicht in dem Buch "Chaos und Anti-Chaos
* - Ein Ausblick auf die Wissenschaft des 21. Jahrhunderts" von
* Jack Cohen und Ian Stewart (S. 274 - 276). Es erschien im Mai 1997 bei:
* Deutscher Taschenbuch Verlag GmbH. & Co. KG , München.
************************************************************************************/
#include <time.h>
#include <graphics.h>
#include "main.h"
void draw_field( bool field[FIELD_WIDTH][FIELD_HEIGHT] )
{
for(int x = 0; x < FIELD_WIDTH; x++)
for(int y = 0; y < FIELD_HEIGHT; y++){
if( field[x][y] )
setfillstyle(SOLID_FILL, BLACK);
else
setfillstyle(SOLID_FILL, WHITE);
bar(x*SQUARE_WIDTH, y*SQUARE_WIDTH, (x+1)*SQUARE_WIDTH, (y+1)*SQUARE_WIDTH);
}
}
void init_field( bool field[FIELD_WIDTH][FIELD_HEIGHT] )
{
for( int x = 0; x < FIELD_WIDTH; x++)
for(int y = 0; y < FIELD_HEIGHT; y++)
if( x >= RECT_START_WIDTH && x <= RECT_END_WIDTH &&
y >= RECT_START_HEIGHT && y <= RECT_END_HEIGHT )
field[x][y] = true;
else
field[x][y] = false;
}
void redraw_square( bool field[FIELD_WIDTH][FIELD_HEIGHT], Pos pos, bool current_pos )
{
if(current_pos)
setfillstyle(SOLID_FILL, RED);
else if( field[pos.x][pos.y] )
setfillstyle(SOLID_FILL, BLACK);
else
setfillstyle(SOLID_FILL, WHITE);
bar(pos.x*SQUARE_WIDTH, pos.y*SQUARE_WIDTH, (pos.x+1)*SQUARE_WIDTH, (pos.y+1)*SQUARE_WIDTH);
}
void run_ant( bool field[FIELD_WIDTH][FIELD_HEIGHT], Pos pos )
{
Direction dir = LEFT;
clock_t _clock;
Pos prev_pos;
unsigned long _time = 0;
_clock = clock();
// ermittel Größe von _time
while( clock()-_clock < CLOCKS_PER_SEC/TIME_SLICE )
_time++;
for( int t = 0; t < STEPS; t++ ){
// ist Ameise auf schwarzer Zelle 90° Wendung nach links
// ist Ameise auf weißer Zelle 90° Wendung nach rechts
for(int i = 0; i < _time; i++)
;
switch( dir){
case UP:
if( field[pos.x][pos.y] )
dir = LEFT;
else
dir = RIGHT;
break;
case LEFT:
if( field[pos.x][pos.y] )
dir = DOWN;
else
dir = UP;
break;
case DOWN:
if( field[pos.x][pos.y] )
dir = RIGHT;
else
dir = LEFT;
break;
case RIGHT:
if( field[pos.x][pos.y] )
dir = UP;
else
dir = DOWN;
break;
}
// dreht Ameise
switch( dir ){
case UP:
pos.y--;
break;
case LEFT:
pos.x--;
break;
case DOWN:
pos.y++;
break;
case RIGHT:
pos.x++;
break;
}
// ändert Farbe von aktueller Zelle
if( field[pos.x][pos.y] )
field[pos.x][pos.y] = false;
else
field[pos.x][pos.y] = true;
redraw_square(field, prev_pos, false);
prev_pos = pos;
redraw_square(field, pos, true);
}
}
int main( int argc, char *argv[])
{
bool field[FIELD_WIDTH][FIELD_HEIGHT];
Pos start_pos;
start_pos.x = START_POS_X;
start_pos.y = START_POS_Y;
init_field(field);
initgraph(FIELD_WIDTH*SQUARE_WIDTH, FIELD_HEIGHT*SQUARE_WIDTH);
draw_field(field);
run_ant( field, start_pos );
getch();
closegraph();
return 0;
}
Würde mich wieder über Antworten freuen, insofern jemand eine Idee hat!
Gruß Soeren288
Edit by Xin: Code-Tags eingefügt
Edit by Xin, 2. Teil: Fettdruck über kompletten Post entfernt - Schreien ist nicht erforderlich ^^