Seite 1 von 1

Einstiegspunkt muss definiert werden ?

Verfasst: 01.04.2013, 16:43
von Kezaar
Hi,

Arbeitsumgebung:
Betriebssystem: Win7 ( 64 bit )
Software: Visual Studio 2012 Express

Vor einigen Tagen begann mein Versuch, mit DirectX 10 und 11 zu beginnen. Darauf hin habe ich die den benötigten Quellcode compilieren und linken wollen. Sowohl Debug als auch im Release-Modus. Jedesmal bekomme ich die Meldung, das kein Einstiegspunkt definiert ist und es zu einem Compilierfehler kommt. Faszinierender Weise habe ich dieses Phänomen auch, wenn ich versuche, mit SDL zu arbeiten.

Versuche ich eine Software zu compilieren, die keinerlei solcher programmierzusätze besitzt, lässt sich das programm ohne probleme ausführen.

Re: Einstiegspunkt muss definiert werden ?

Verfasst: 01.04.2013, 17:15
von Schrompf
Du hast zwar leider weder Code noch die tatsächliche Fehlermeldung gepostet, aber ich rate mal ins Blaue: Der Compiler vermisst eine main().

Falls Du Dein Projekt auf "Win32-Anwendung" gestellt hast, lautet die Startfunktion WinMain() - siehe http://msdn.microsoft.com/en-us/library ... s.85).aspx

Falls Du Dein Projekt auf "Konsolenanwendung" gestellt hast, lautet die Startfunktion wie bei Standard-C++ "int main(int argc, char** argv)"

Je nach Deiner Projekteinstellung muss eine dieser Funktionen da sein, sonst meckert der Compiler.

Re: Einstiegspunkt muss definiert werden ?

Verfasst: 01.04.2013, 17:46
von Kezaar
Es handelt sich um das EmptyProject11 aus dem SampleBrowser von DirectX June 2010.

meine main funktion ist wie folgt innerhalb meiner win32-anwendung definiert:
int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow )

Re: Einstiegspunkt muss definiert werden ?

Verfasst: 02.04.2013, 04:16
von Niki
Das ist schon mehr als merkwürdig. Der Einstiegspunkt ist definitiv korrekt. Das EmptyProject11 lässt sich hier auch ohne weiteres kompilieren. Allerdings benutze ich VS 2010 Professional, und kein VS 2012 Express. Vielleicht ist ja bei der Projektkonvertierung von 2010 nach 2012 was schiefgelaufen.

Neben dem was Schrompf schon sagte, kann ich mir nur noch vorstellen das die .cpp Dateien nicht kompiliert werden. Mach mal irgendeinen Syntaxfehler in EmptyProject11.cpp. Wenn der Compiler da nicht meckert, dann wird die Datei nicht kompiliert, denn Syntaxfehler kommen vor Linkerfehlern.

Nun weiß ich nicht mehr wie das in VS 2012 funktioniert, aber vielleicht ist es ja genau so wie in VS 2010. Im Solution Explorer, klicke EmptyProject11.cpp mit der rechten Maustaste an und wähle Properties. Unter Configuration Properties -> General, stell sicher das:

Excluded From Build: No
Item Type: C/C++ compiler

Sorry für die Englischen Begriffe aber ich habe keinen Deutschen Compiler installiert :)

Re: Einstiegspunkt muss definiert werden ?

Verfasst: 02.04.2013, 10:27
von Jonathan
Mich macht das wWinMain etwas stutzig. Scheint die Unicode-Variante von WinMain zu sein, vielleicht entspricht das aber nicht den Projekteinstellungen.

Re: Einstiegspunkt muss definiert werden ?

Verfasst: 02.04.2013, 10:37
von kimmi
Das klingt merkwürdig. Schau doch mal nach, für welches Subsystem gebaut wird. Gehe dazu auf dein projekt -> rechte Maustaste -> Linker -> System: was steht hier bei dem Schalter SubSystem? Für eine WinMain sollte hier so etwas stehen wie /SUBSYSTEM:WINDOWS .

Gruß Kimmi

Re: Einstiegspunkt muss definiert werden ?

Verfasst: 02.04.2013, 11:33
von Niki
Jonathan hat geschrieben:Mich macht das wWinMain etwas stutzig. Scheint die Unicode-Variante von WinMain zu sein, vielleicht entspricht das aber nicht den Projekteinstellungen.
Ja, wWinMain ist die Unicode-Variante :) Der Linker sucht nach WinMain oder wWinMain und benutzt dann die Variante die er findet.