Nichtaufgeloestes externes Symbol

Hab aus einem Buch für 3D Programmierung einen code für eine Look-up-tabelle abgetippt
leider kommen mit Visual C++ folgende fehler:
LIBCD.lib(wincrt0.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _WinMain@16
Debug/Lookuptabelle.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise

Hier ma der der Quelltext:

Code:
#include <iostream.h>
#include <math.h>

#define SAFE_DELETE(p) {if(p) {delete (p); (p)=NULL;}}
#define SAFE_DELETE_ARRAY(p) {if(p) {delete[] (p); (p)=NULL;}}

float*SinLookUp		=NULL;
float*CosLookUp		=NULL;
float*ArcCosLookUp	=NULL;
float*WurzelLookUp  =NULL;

inline void Berechne_LookUpTabellen(void)
{
	for(long winkel =0; winkel<360; winkel++)
	{
		SinLookUp[winkel] = sinf(winkel*3.141592654f/180.0f);
		CosLookUp[winkel] = cosf(winkel*3.141592654f/180.0f);

	}

	for(long i = 0; i<2001; i++)
	{
		WurzelLookUp[i] =sqrtf(i/1000.0f);
		ArcCosLookUp[i] = 180.0f/3.141592654f*
						  acosf((i-1000.0f)/1000.0f);
	}
}


//Zugriffsfunktion
inline float ReturnSineValue(float winkel)
{
	return(SinLookUp[(long)winkel]);
}

inline float ReturnCosineValue(float winkel)
{
	return(CosLookUp[(long)winkel]);
}

inline float ReturnArcCosineValue(float value)
{
	return(ArcCosLookUp[(long)(value*1000+1000)]);
}

inline float ReturnSqrtValue(float value)
{
	return(WurzelLookUp[(long)(value*100)]);
}

int main (void)
{
	SinLookUp	=new float[360];
	CosLookUp	=new float[360];
	ArcCosLookUp=new float[2001];
	WurzelLookUp=new float[2001];

	Berechne_LookUpTabellen();

	cout<<"sin(45 DEG) = " << ReturnSineValue(45.0f)<<endl;
	cout<<"cos(214 DEG)= " << ReturnCosineValue(214.0f)<<endl;
	cout<<"ArcCos(-0.7)= " << ReturnArcCosineValue(-0.7f)<<endl;
	cout<<"Wurzel(1.4) = " << ReturnSqrtValue(1.4f)<<endl;

	SAFE_DELETE_ARRAY(SinLookUp)
	SAFE_DELETE_ARRAY(CosLookUp)
	SAFE_DELETE_ARRAY(WurzelLookUp)
	SAFE_DELETE_ARRAY(ArcCosLookUp)

	return 0;
}
 
warum visual c++ das nicht linken will, kann ich dir nicht sagen, aber am code kanns nicht liegen, der wird mit g++ 4.2.3 problemlos kompiliert und kann auch ausgeführt werden.

aber nur mal so auf verdacht: hast du beim erstellen des projektes irgendwas mit "fensteranwendung" oder so ähnlich ausgewählt? richtig wäre afaik "konsolenanwendung" oder ähnliches
 
Original von farhaven
aber nur mal so auf verdacht: hast du beim erstellen des projektes irgendwas mit "fensteranwendung" oder so ähnlich ausgewählt? richtig wäre afaik "konsolenanwendung" oder ähnliches
Der Verdacht ist richtig, statt "Konsolenanwendung" hat er irgendetwas anderes ausgewählt, da der VC++-Compiler bei Fensteranwendung WinMain und nicht main() als Startfunktion erwartet.

Und zweitens solltest du bei C++-Code die Header iostream und cmath anstatt der alten Header mit dem ".h" verwenden.(Dann noch die entsprechenden Funktionen per "using std::foo" oder "using namespace std" bekannt machen, damit du nicht immer std::cout schreiben musst).
 
Original von erik SN
-.- ohmann da hät ich auch selbst drauf kommen können....

funktioniert jetzt alles vielen dank


macht ja nix! jetzt hast du es ja für später gerlernt :D
Vistual Studio ist eh ne sache für sich (diese aussage soll weder negativ noch postiv gemeint sein).
fakt ist aber, das man unter Visual Studio 2008 -kein- C-sources compilieren kann.
weiß ich aus eigener erfahrung -> unter VS 2005 kann ich ein c-code kompiliere und aussführen, währen VS 2008 streikt.
 
Original von _fux_
fakt ist aber, das man unter Visual Studio 2008 -kein- C-sources compilieren kann.
weiß ich aus eigener erfahrung -> unter VS 2005 kann ich ein c-code kompiliere und aussführen, währen VS 2008 streikt.

Bist du sicher, dass du nicht .net-Anwendung o.ä. ausgewählt hast, ich kann mich vage daran erinnern bei der Express auch eine Option für eine normale C/C++-Anwendung gesehen zu haben.
Es kann auch sein, dass in deinem Testcode veraltete/falsche Dinge drin waren, die VS 2005 noch akzeptiert hat, das neue jedoch nicht mehr(beliebt ist bei sowas "void main...", wobei ich nicht weiß ob das bei VS2008 nicht mehr geht).
 
Zurück
Oben