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

TigerClaw25

unregistriert

1

05.04.2013, 12:18

Sound die 10te

Hallo,

hab das Problem mit dem Sound, wurde hier öfters gesprochen, aber komme zu keiner Lösung.

Habe die include und lib Dateien sowie die SDL_mixer aus dem Verzeichnis in mein Spieleverzeichnis, wo die anderen include und libs sind, kopiert.

Dann habe ich foilgenden Code spaßeshalber in die main kopiert:

C-/C++-Quelltext

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
// SDL mit dem Grafik- und Audiosystem initialisieren.
if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) == -1)
{
    // Ups, das hat nicht funktioniert!
    // Wir geben die Fehlermeldung aus.
    std::cerr << "Konnte SDL nicht initialisieren! Fehler: " << SDL_GetError() << std::endl;
    return -1;
}
// [nach der SDL-Initialisierung] SDL_mixer starten.
const int samplingFrequency = 44100;    // 44100 Hz Abtastfrequenz
Uint16 audioFormat = AUDIO_S16SYS;      // 16 Bits pro Sample
const int numChannels = 2;              // 2 Kanäle = Stereo
const int chunkSize = 4096;             // ein guter Wert ...
if(Mix_OpenAudio(samplingFrequency, audioFormat, numChannels, chunkSize) == -1)
{
    std::cerr << "Konnte SDL_mixer nicht starten! Fehler: " << Mix_GetError() << std::endl;
    return -1;
}

// WAV-Datei laden.
Mix_Chunk* sound = Mix_LoadWAV("C:\\Projekte\SDL_Game\SDL_Game\Data\test.wav");
if(!sound)
{
    std::cerr << "Konnte WAV-Datei nicht laden! Fehler: " << Mix_GetError() << std::endl;
    return -1;
}


die beiden includes SDL_mixer und SDL.h habe ich angegeben, aber nichts passiert ...


Fehler:

1>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: Standardbibliothek "msvcrt.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_Mix_LoadWAV_RW" in Funktion "_SDL_main".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_Mix_OpenAudio" in Funktion "_SDL_main".
1>C:\Projekte\SDL_Game\Debug\SDL_Game.exe : fatal error LNK1120: 2 nicht aufgelöste externe Verweise.
1>Das Buildprotokoll wurde unter "file://c:\Projekte\SDL_Game\SDL_Game\Debug\BuildLog.htm" gespeichert.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

05.04.2013, 12:43

Hast du die zugehörigen .libs gelinkt?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

TigerClaw25

unregistriert

3

05.04.2013, 12:49

unter Linker-> Libs? dort wo SDL.lib und sdlmain.lib stehen? welche libs sind das?

4

05.04.2013, 14:24

"welche libs sind das?"
...
"Habe die include und lib Dateien sowie die SDL_mixer aus dem Verzeichnis in mein Spieleverzeichnis, wo die anderen include und libs sind, kopiert."

Somit müsstest du s eigentlich wissen.

"wo SDL.lib und sdlmain.lib stehen?"
Da trägst du ein, wie die lib Datei vom SDL_mixer heißt.

TigerClaw25

unregistriert

5

05.04.2013, 14:28

Also ich habe als erstes die SDL_Mixer kompiliert. Dazu habe ich die sln Datei in mein Visual C gezogen und kompiliert. Wurde dann gefragt, welche Datei oder URL ich öffnen cmöchte, hab auf abbrechen geklickt. Was bedeutet diese Frage??? UNd Warum kompilieren?



EDIT: Hab das jetzt wie folgt gemacht:

Habe eine Sound.h und eine Sound.cpp sowie in der main.cpp folgendes hinzugefügt:

C-/C++-Quelltext

1
2
3
4
5
6
7
    // Soundtrack
    CSound  *m_pSound;              // Sound-Instanz 
    m_pSound = NULL; 
    m_pSound = new CSound;
    m_pSound->LoadMusic("Data/test.wav",100);

    m_pSound->PlayMusic();


Läuft jetzt, aber muss es anders versuchen, gefällt mir noch nicht.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »TigerClaw25« (05.04.2013, 14:51)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

05.04.2013, 15:02

Bin ich der einzige, der gerade etwas verwirrt von seinen Fragen und Aussagen ist?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

7

05.04.2013, 15:08

Bin ich der einzige, der gerade etwas verwirrt von seinen Fragen und Aussagen ist?

Nope. Steige da auch nicht durch.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

TigerClaw25

unregistriert

8

05.04.2013, 15:31

Also es funktioniert ja alles soweit. Möchte das aber direkt abspielen lassen, sobald das Spiel initialisiert wurde, also am besten in die game.cpp einbinden.

Hier der Code:

C-/C++-Quelltext

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
void CGame::Init ()
{
    // Neuen Spieler initialisieren
    m_pPlayer = new CPlayer;
    m_pPlayer->Init ();
    m_pPlayer->Reset ();

    // Hintergrundbild (Sprite) laden
    m_pSpriteBackground = new CSprite;
    m_pSpriteBackground->Load ("Data/Background.bmp");

    // Sprite für Asteroiden laden
    m_pSpriteAsteroid = new CSprite;
    m_pSpriteAsteroid->Load ("Data/Asteroid.bmp", 20, 64, 64);
    m_pSpriteAsteroid->SetColorKey (255, 0, 255);

    // Sound laden
    m_pSound = NULL; 
    m_pSound = new CSound;
    m_pSound->LoadMusic("Data/test.wav",100);
    m_pSound->PlayMusic();

    // Timer für Asteroiden zurücksetzen
    m_fAsteroidTimer = 0.0f;

    // Spiel läuft
    m_bGameRun = true;
} // Init


Sound *m_pSound; hbe ich in der game.h deklariert. Auch -include "Sound.h" habe ich in der game.h angegeben, aber es steht immer da, dass die include Datei nicht gefunden wurde. Kopiere ich den Teil des Codes direkt in die main.cpp, geht es ohne Probleme...

FSA

Community-Fossil

  • Private Nachricht senden

9

05.04.2013, 15:34

Hast du irgendwie 2 verschiedene Projekte am laufen? Oder zwei verschieden Konfigurationen?

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

TigerClaw25

unregistriert

10

05.04.2013, 15:36

hmm, scheint als nutzt der manche Dateien aus dem original Verzeichnis ...

Werbeanzeige