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

C--

Alter Hase

  • »C--« ist der Autor dieses Themas

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

1

21.07.2009, 18:00

2 Fragen zu SDL

Hallo Leute!

Ich habe jetzt inzwischen schon Heiko Kalistas Buch ducrhgearbeitet.

Ich hab jetzt ein kleines Spiel mit SDL geproggt(TicTacToe ;) ), die Klassen Framework, Game, TSingleteon, Sprite, Timer und Player übernommen und ein bisschen verändert. Das Spiel läuft jetzt ganz gut und ich wollte jetzt auf Release umstellebnm.

Hab, wie in Heikos Buch beschrieben unter Projekt->Eigenschaften->Konfigurationseigenschaften->C/C++->Codegenerierung->Laufzeitbiblithek auf Multithreaded-Debug-DLL (/MDd) umgestellt.

Wenn ich jetzt versuche das mit Release kompilierte Programm zu starten, erscheint die Fehlermeldung:

Zitat

Die Anwendung konnte nicht gestartet werden, weil MSVCR90D.dll nicht gefunden wurde. Neuinstallation der Anwendung könnte das Problem beheben.


Wenn ich Laufzeitbibliothek umstelle bekomme ich Linkerfehler.

Ich hoffe mir kann jemand helfen, ich benutze MSVC 2008 Express.

Und dann hab ich noch ne zweite Frage: Wenn ich das Spiel im Fensterodus starte erscheint ein Cursor, im Vollbildmodus nicht, eigentlich brauch ich ihn (im Moment) auch nicht, aber ich habe mir schon überlegt Mausunterstützung für mein kleines TicTacToeSpiel zu proggen, aber ich habe keine Ahnung, wie das geht, deshalb habe ich jetzt folgende Fragen:

- Wie lass ich den Cursor im Vollbildmodus anzeigen?
- wie frage ich Mausklicks ab, auch an welcher Stelle geklickt worden ist.


Vielen Dank, ich wäre froh, wenn mir jemand helfen könnte :D
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

2

21.07.2009, 18:04

kann es sein dass du bei release MultiThreadedDebug-Dll genommen hast? wenn das der fall ist dann musst du eigentlich nur auf MultThreaded-Dll gehen (im release) dann sollte das klappen!

C--

Alter Hase

  • »C--« ist der Autor dieses Themas

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

3

21.07.2009, 18:08

Wie gesagt, dann bekomm ich Linkerfehler ;) :

Zitat


Fehler 3 error LNK2001: Nicht aufgelöstes externes Symbol ""const type_info::`vftable'" (??_7type_info@@6B@)". CMap.obj
Fehler 4 error LNK2001: Nicht aufgelöstes externes Symbol ""void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z)". CMap.obj
Fehler 2 error LNK2001: Nicht aufgelöstes externes Symbol ""void __cdecl operator delete(void *)" (??3@YAXPAX@Z)". CMap.obj
Fehler 1 error LNK2001: Nicht aufgelöstes externes Symbol "@__security_check_cookie@4". CMap.obj
Fehler 5 error LNK2001: Nicht aufgelöstes externes Symbol "__imp__exit". Sprite.obj
Fehler 6 error LNK2001: Nicht aufgelöstes externes Symbol "_mainCRTStartup". TicTacToe
Fehler 7 fatal error LNK1120: 6 nicht aufgelöste externe Verweise. TicTacToe.exe


Ich wundere mich, weil die in Debug mit Laufzeitbibliothek MultithreadedDebugg-Dll nicht kommen.
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

Nebulak

Frischling

Beiträge: 9

Wohnort: Karlsruhe

Beruf: Brennschneider

  • Private Nachricht senden

4

22.07.2009, 00:32

Zitat


- Wie lass ich den Cursor im Vollbildmodus anzeigen?
- wie frage ich Mausklicks ab, auch an welcher Stelle geklickt worden ist.


Versuchs mal mit ShowCursor(true).
Um die Position raus zu finden musst du in der WindowsMessage Funktion auf WM_LBUTTONDOWN reagieren.

z.b. so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
switch(Msg)
{
          ...
   case WM_LBUTTONDOWN:
          PosX = GET_X_LPARAM(lParam);
          PosY = GET_Y_LPARAM(lParam);
          break;
          ...

}
mfg Nebulak

C--

Alter Hase

  • »C--« ist der Autor dieses Themas

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

5

22.07.2009, 17:10

@Nebulak: Ne, ich lass ja das Fenster von der SDL verwalten und hab also gar keine WindowsMessage-Funktion, ist ja auch ne Konsolenanwendung, von der aus in den Vollbildmodus geschaltet wird, arbeite gar nicht mit WinAPI. :(


EDIT: Zu den Linkerfehlern:
Hab jetzt mal alle Laufzeitbibliotheken durchpribiert:

Multithreaded-DLL:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Buildprotokoll     Erstellen wurde gestartet: Projekt: "TicTacToe", Konfiguration: "Release|Win32"
 Befehlszeilen     Die temporäre Datei "c:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\TicTacToe\Release\RSP00001113801352.rsp" wird erstellt. Inhalt:
[
/OUT:"C:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\Release\TicTacToe.exe" /INCREMENTAL:NO /MANIFEST:NO /NODEFAULTLIB:"Libc.lib" /NODEFAULTLIB:"msvcrt.lib" /SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF /LTCG /DYNAMICBASE /NXCOMPAT /MACHINE:X86 sdl.lib sdlmain.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

".\Release\CMap.obj"

".\Release\Framework.obj"

".\Release\Game.obj"

".\Release\main.obj"

".\Release\Player.obj"

".\Release\Sprite.obj"

".\Release\Timer.obj"
]Erstellen der Befehlszeile "link.exe @"c:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\TicTacToe\Release\RSP00001113801352.rsp" /NOLOGO /ERRORREPORT:PROMPT" Ausgabefenster     Verknüpfen...
CMap.obj : error LNK2001: Nicht aufgelöstes externes Symbol "@__security_check_cookie@4".
CMap.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""void __cdecl operator delete(void *)" (??3@YAXPAX@Z)".
CMap.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""const type_info::`vftable'" (??_7type_info@@6B@)".
CMap.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z)".
Sprite.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__exit".
LINK : error LNK2001: Nicht aufgelöstes externes Symbol "_mainCRTStartup".
C:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\Release\TicTacToe.exe : fatal error LNK1120: 6 nicht aufgelöste externe Verweise.
 Ergebnisse     Das Buildprotokoll wurde unter "file://c:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\TicTacToe\Release\BuildLog.htm" gespeichert.
TicTacToe - 7 Fehler, 0 Warnung(en)
 


Multithreaded:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Buildprotokoll     Erstellen wurde gestartet: Projekt: "TicTacToe", Konfiguration: "Release|Win32"
 Befehlszeilen     Die temporäre Datei "c:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\TicTacToe\Release\RSP00001213805236.rsp" wird erstellt. Inhalt:
[
/O2 /Ob2 /Oi /GL /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /FD /EHsc /MT /Fo"Release\\" /Fd"Release\vc90.pdb" /W3 /c /TP ".\CMap.cpp"

".\Timer.cpp"

".\Sprite.cpp"

".\Player.cpp"

".\main.cpp"

".\Game.cpp"

".\Framework.cpp"
]Erstellen der Befehlszeile "cl.exe @"c:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\TicTacToe\Release\RSP00001213805236.rsp" /nologo /errorReport:prompt"Die temporäre Datei "c:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\TicTacToe\Release\RSP00001313805236.rsp" wird erstellt. Inhalt:
[
/OUT:"C:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\Release\TicTacToe.exe" /INCREMENTAL:NO /MANIFEST:NO /NODEFAULTLIB:"Libc.lib" /NODEFAULTLIB:"msvcrt.lib" /SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF /LTCG /DYNAMICBASE /NXCOMPAT /MACHINE:X86 sdl.lib sdlmain.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

".\Release\CMap.obj"

".\Release\Framework.obj"

".\Release\Game.obj"

".\Release\main.obj"

".\Release\Player.obj"

".\Release\Sprite.obj"

".\Release\Timer.obj"
]Erstellen der Befehlszeile "link.exe @"c:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\TicTacToe\Release\RSP00001313805236.rsp" /NOLOGO /ERRORREPORT:PROMPT" Ausgabefenster     Kompilieren...
CMap.cpp
Timer.cpp
Sprite.cpp
Player.cpp
main.cpp
Game.cpp
Framework.cpp
Verknüpfen...
sdlmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__strncpy".
sdlmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__strrchr".
sdlmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__fprintf".
sdlmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__remove".
sdlmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__fopen".
sdlmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__setbuf".
sdlmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__freopen".
sdlmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp___getcwd".
C:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\Release\TicTacToe.exe : fatal error LNK1120: 8 nicht aufgelöste externe Verweise.
 Ergebnisse     Das Buildprotokoll wurde unter "file://c:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\TicTacToe\Release\BuildLog.htm" gespeichert.
TicTacToe - 9 Fehler, 0 Warnung(en)


Multithreaded-Debug:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Buildprotokoll     Erstellen wurde gestartet: Projekt: "TicTacToe", Konfiguration: "Release|Win32"
 Befehlszeilen     Die temporäre Datei "c:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\TicTacToe\Release\RSP00001413804876.rsp" wird erstellt. Inhalt:
[
/O2 /Ob2 /Oi /GL /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /FD /EHsc /MTd /Fo"Release\\" /Fd"Release\vc90.pdb" /W3 /c /TP ".\CMap.cpp"

".\Timer.cpp"

".\Sprite.cpp"

".\Player.cpp"

".\main.cpp"

".\Game.cpp"

".\Framework.cpp"
]Erstellen der Befehlszeile "cl.exe @"c:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\TicTacToe\Release\RSP00001413804876.rsp" /nologo /errorReport:prompt"Die temporäre Datei "c:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\TicTacToe\Release\RSP00001513804876.rsp" wird erstellt. Inhalt:
[
/OUT:"C:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\Release\TicTacToe.exe" /INCREMENTAL:NO /MANIFEST:NO /NODEFAULTLIB:"Libc.lib" /NODEFAULTLIB:"msvcrt.lib" /SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF /LTCG /DYNAMICBASE /NXCOMPAT /MACHINE:X86 sdl.lib sdlmain.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

".\Release\CMap.obj"

".\Release\Framework.obj"

".\Release\Game.obj"

".\Release\main.obj"

".\Release\Player.obj"

".\Release\Sprite.obj"

".\Release\Timer.obj"
]Erstellen der Befehlszeile "link.exe @"c:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\TicTacToe\Release\RSP00001513804876.rsp" /NOLOGO /ERRORREPORT:PROMPT" Ausgabefenster     Kompilieren...
CMap.cpp
Timer.cpp
Sprite.cpp
Player.cpp
main.cpp
Game.cpp
Framework.cpp
Verknüpfen...
sdlmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__strncpy".
sdlmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__strrchr".
sdlmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__fprintf".
sdlmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__remove".
sdlmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__fopen".
sdlmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__setbuf".
sdlmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__freopen".
sdlmain.lib(SDL_win32_main.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp___getcwd".
C:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\Release\TicTacToe.exe : fatal error LNK1120: 8 nicht aufgelöste externe Verweise.
 Ergebnisse     Das Buildprotokoll wurde unter "file://c:\Users\Ich\Documents\Visual Studio 2008\Projects\Visual C++\Projects\TicTacToe\TicTacToe\Release\BuildLog.htm" gespeichert.
TicTacToe - 9 Fehler, 0 Warnung(en)


Multithreaded-Debug-DLL wird fehlerfrei compiliert und geliknt, aber beim Programmstart kommt der Fehler(s. esrtre Post)

Ich weiss nicht,ob es an der Laufzeitbibliothek liegt, aber was ich sehr seltsam finde, ist, dass es im DEbug keine Fehler gibt bei Multithreaded-DebugDLL.

EDIT:

Hat sich erledigt, hatte vergessen einige Libs zu linken.

Mit dem Mauscursor hab ich jetzt so erledigt, dass ich vor dem flippen des Buffers SDL_ShowCursor(true) aufrufe, in der SDL-Message-Loop frage ich dann für die Koordinaten Event.button.x und Event.button.y ab. (Dabei ist Event vom Typ "SDL_Event".
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

Werbeanzeige