Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

spacegaier

Alter Hase

  • »spacegaier« ist der Autor dieses Themas

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

1

25.03.2007, 22:50

[SDL] MSVCRT.lib will eine WinMain, ich aber nicht

Hallo zusammen,

ich habe ein komisches Problem in einem SDL-Projekt:

Führe ich das Programm im Release-Modus aus, läuft es einwandfrei, was Linker und Co. angeht (hat andere Bugs, die mit meienm momentanen roblem aber nicht zusammen hängen).

Wenn ich das Ganze aber nun im Debug-Modus laufen lasse, bekomme ich einen Linkererror, weil ich keine WinMain habe, die aber von irgendwas erwartet wird. Nun ist aber das Problem, dass ich nicht weiß, wer hier was erwaret.

Ich poste erstmal den Fehler:
[list]MSVCRT.lib(crtexew.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_WinMain@16" in Funktion "___tmainCRTStartup".[/list]Ich habe aber keine MSVCRT.lib dazugelinkt (sie wird auch nicht bei den Abhängigkeiten aufgeführt). Könnte die vielleicht standardmäßig gelinkt sein? Und wenn ja, wie kann ich so was ausschalten.

Grüße - spacegaier

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

2

25.03.2007, 23:04

Projekt -> Einstellungen -> C/C++ -> Codegenerierung -> Laufzeitbibliothek auf "Multi-threaded DLL" umstellen.. (ich denke zumindest dass es das ist)
"Have you tried turning it off and on again?"

spacegaier

Alter Hase

  • »spacegaier« ist der Autor dieses Themas

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

3

25.03.2007, 23:16

Nein, ist schon so eingestellt, aber trotzdem danke für den Hinweis.

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

4

25.03.2007, 23:22

Hast du die Einstellung auch fuer Debug und Releasemodus vorgenommen? Visual Studio verwendet fuer beides unabhaengige Konfigurationen. Geh notfalls mal alle Eigenschaften-Seiten durch und guck nach ob in der Debugversion irgendwas anders eingestellt ist.
"Have you tried turning it off and on again?"

spacegaier

Alter Hase

  • »spacegaier« ist der Autor dieses Themas

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

5

26.03.2007, 15:48

Ist in beiden Fällen auf Multithreaded-DLL gestellt (hatte ich voher auch im Verdacht und habe es deshalb mit deinem ersten Post schon überprüft).

Allerdings Dinge, wie 'Vollständige Laufzeitüberprüfung' sind verschieden eingestellt.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

26.03.2007, 16:34

Hast du vielleicht vergessen, die SDLmain.lib zu linken?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

7

26.03.2007, 16:52

Auch an solche Banalitäten gedacht wie dass die Präprozessordefinitionen für Debug und Release oft unterschiedlich sind?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

8

26.03.2007, 17:24

hmm das sollte eigentlich wie folgt lauten:
Release => Multi-threaded DLL
Debug => Multi-threaded Debug DLL

und Preprozessor ist beim einen NDEBUG und beim anderen _DEBUG ...
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

9

26.03.2007, 17:28

Beispiel aus einem meiner Projekte:

Debug -> _WIN32;_DEBUG;_CONSOLE; isServer; _CRT_SECURE_NO_DEPRECATE;
Release -> WIN32;NDEBUG

und schon hat man Spass, weil beim einen wird er wohl von einer Konsole(main) ausgehen und beim anderen von einer WinApp(WinMain).
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

spacegaier

Alter Hase

  • »spacegaier« ist der Autor dieses Themas

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

10

26.03.2007, 18:04

Also SDLmain.lib ist gelinkt.

Präprozessor:

Debug: WIN32;_DEBUG;_WINDOWS
Release: WIN32;NDEBUG;_WINDOWS

Das Umschalten bei Debug auf Multithreaded-Debug-DLL bringt leider auch nichts.

Noch weitere Dinge an denen es liegen könnte?

Werbeanzeige