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

1

30.07.2003, 09:33

DS3DALG_HRTF_FULL error LNK2001: unresolved external symbol

Hallo,

Die Grafik der TriBase ist klasse. Habe nur nen Celeron 500 und ne einfache GeForce4 MX440 und es macht Spaß immer mehr optisches Gezumpe dazu zu schrauben und trotzdem noch hübsche FPS zu haben !!! Da kann ich Davids System nur loben.

Jetzt habe ich aber mit dem Sound Probleme. Wenn ich PlayAvailableBuffer() auf nem Sound aufrufe stockt das Game kurz (ca. ne halbe Sekunde) dann spielt ers ab. Wenn zu viele Soundbuffer des gleichen Sounds gleichzeitig gestartet werden gibts nen kurzes Soundchaos und das Stocken wird stärker, dann läuft das Game mit den gestarteten Sounds weiter (habe 6 Kanonen mit nem Abschuß-Sound).

Ich habe dann umgestellt, daß jede Kanone ihren eigenen Soundbuffer zugewiesen bekommt und Kanone 1 auch Soundbuffer 1 startet (mit Play(i), hat ein wenig Besserung gebracht.

Komischerweise ist das Stocken weniger, wenn der Sound schon irgendwo läuft (Dauerfeuer). hat die Engine irgendwie Probs einen gerade unbenutzten SOundbuffer zu finden? Kann das mit meiner Soundkarte zusammenhängen (Terratec 5.1)??? Ich krichs nich hin.

Leider kann ich den 3D Algorithmus nicht auf DS3DALG_HRTF_FULL stellen, da der Compiler mir dann unresolved external symbol meldet. (GUID_NULL funzt aber) - Ist das das Problem???

Sound wird mit 3D initialisiert (letzter Parameter TRUE)


ZWEITES PROB:
Habe die Musikcodes aus Breakanoid übernommen (Aber das mp3 durch eigene Mucke ersetzt). habe das dann mal auskommentiert (um die Ballersounds besser zu hören) und nach dem einkommentieren startet die Musik nicht wieder. Jetzt habe ich nach manchen Compilerläufen Musik, manchmal nicht (so im Tageswechsel), ohne daß ich den Code für die Musik anpacke. Wahrscheinlich Spukts in meinem Compi ...

Wäre mal wieder sehr dankbar, wenn das zu beheben wäre???

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
    // Sounds laden
    for(DWORD s = 0; s < 2; s++)
    {
        sprintf(acFilename, "Data\\Sound%d.wav", s + 1);
        m_apSound[s] = new tbSound;
        if(m_apSound[s]->Init(acFilename,
                              DSBCAPS_STATIC | DSBCAPS_LOCDEFER |
                              DSBCAPS_CTRL3D | DSBCAPS_CTRLFREQUENCY |
                              DSBCAPS_MUTE3DATMAXDISTANCE,
                              DS3DALG_HRTF_FULL,
//                            GUID_NULL,
                              12))
        {
            // Fehler!
            TB_ERROR("Fehler beim Laden eines Sounds!", TB_ERROR);
        }
        m_apSound[s]->SetDistances(20.0f, cMAXVIEW);
    }

    // Musik laden und gleich abspielen
    m_pMusic = new tbMusic;
    if(m_pMusic->Init("Data\\Action.mp3"))
    {
        // Fehler!
        TB_ERROR("Fehler beim Laden der Musik!", TB_ERROR);
    }

//  m_pMusic->Stop();
//  m_pMusic->Play(TRUE);
//  m_pMusic->SetVolume(-500);
    return TB_OK;
:kotz:

2

30.07.2003, 13:47

Konstruktiver:

Fangen wirs konstruktiver an:

Wie muß ich vorgehen, daß ich kein

Zitat

error LNK2001: unresolved external symbol _DS3DALG_HRTF_LIGHT
bekomme, wenn ich beim Sound-Init die Option DS3DALG_HRTF_LIGHT oder FULL vergebe. Das DS3DALG_DEFAULT kennt der Compiler ??? Steht in der Datei dsound.h direkt drüber aber halt per #define definiert.

Mein Code

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    for(DWORD s = 0; s < 2; s++)
    {
        sprintf(acFilename, "Data\\Sound%d.wav", s + 1);
        m_apSound[s] = new tbSound;
        if(m_apSound[s]->Init(acFilename,
                              DSBCAPS_STATIC | DSBCAPS_LOCDEFER |
                              DSBCAPS_CTRL3D | DSBCAPS_CTRLFREQUENCY |
                              DSBCAPS_MUTE3DATMAXDISTANCE,
                              DS3DALG_HRTF_LIGHT,
//                                                       DS3DALG_DEFAULT,
//                            GUID_NULL,
                              16))
        {
            // Fehler!
            TB_ERROR("Fehler beim Laden eines Sounds!", TB_ERROR);
        }
        m_apSound[s]->SetDistances(20.0f, cMAXVIEW);
    }

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

30.07.2003, 15:18

Was das erste Problem angeht: Keine Ahnung, woran das liegt. An der Engine aber sicher nicht... denke ich doch zumindest mal.
Zum zweiten Problem: Vielleicht musst Du noch die DirectSound-Library einbinden?

4

31.07.2003, 08:19

Zitat von »"David Scherfgen"«

Was das erste Problem angeht: Keine Ahnung, woran das liegt. An der Engine aber sicher nicht... denke ich doch zumindest mal.

Habe alles mögliche probiert, Erst als ich von 3D-SOunds wieder auf einfache Sounds umgestellt habe,liefs flüssig.

Ich denke mal, daß erst, wenn ich das zweite Problem im Griff habe, auch das erste damit zu lösen ist (schließlich gehts ja um 3D-Sounds und den zugehörigen Algo). Wie viele 3D-Sounds sind eigentlich Limit - weil 6 Kanonen mit jeweils mehreren Schuß pro Minute und gleichzeitigem Feuer, da kommen schon einige Sounds / Sekunde zusammen. Das Hauptproblem scheint auch der gleichzeitige Start mehrerer gleicher Sounds pro Frame (also mehr oder weniger gleichzeitig) zu sein - einen einzigen Soundbuffer mehrmals starten ging dagegen gut - klingt aber dünn.

Sollte auch gar keine Kritik an der Engine sein, meine Vermutung war auch, daß es an meiner Soundkarte liegt oder so, weil wenn die Engine bei der Grafik so schnell ist, warum sollte sie dann bei dem Sound langsamer sein!

Zitat

Zum zweiten Problem: Vielleicht musst Du noch die DirectSound-Library einbinden?

Sowas?

Quellcode

1
include #dsound.h

Macht das nicht die TriBase?
Oder irgendeine dsound.lib irgendwie in das Projekt von VC??? Habe alles so installiert wie in Deinem Buch beschrieben. Wie mach ich'n das?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

31.07.2003, 08:34

Zitat von »"maxx"«

Sowas?

Quellcode

1
include #dsound.h

Was soll das denn sein? Ich meinte eigentlich die DSound.lib in den Projekteinstellungen für den Linker eintragen...

6

31.07.2003, 08:57

Zitat von »"David Scherfgen"«

Was soll das denn sein?

Gute Frage :) Ich meinte

Quellcode

1
#include "dsound.h"

7

04.08.2011, 02:09

Du musst dxguid.lib dazulinken.

Die Antwort kommt wahrscheinlich ein paar Jahre zu spät aber vielleicht hilft es noch jemand anderem.

Werbeanzeige