wie verwende ich OpenAL
-
Ich möchte gerne OpenAL verwenden. Ich hab mir dafür das OpenAL 1.1 SDK gedownloadet und die Lib und includet Datein bei Visual C++ angegeben und folgenden Cod ausprobirt
#include "stdafx.h"
#include<al.h>
ALuint s[1];
int _tmain(int argc, _TCHAR* argv[])
{
alGenBuffers(1,s);
return 0;
}und bekamm folgende fehlermeldungen
1>------ Erstellen gestartet: Projekt: 1, Konfiguration: Release Win32 ------
1>1.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__alGenBuffers".
1>D:\Visual C\1\Release\1.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========wenn ich alGenBuffers(1,s); weglasse leuft das Programm. Das Programm soll ein OpenAL Buffer für Audiodaten erzeugen. Wo ist der fehler
-
Nicht (richtig) gelinkt?
-
Wie link ich OpenAL in Visual C++ richtig?
-
Ich hab bei Visual C++ zwar den Pfad zu den libs angegeben aber nicht den Namen jetz wird das Programm zwar erzeugt aber es kommen immernoch Fehlermeldungen. Ich hab gestern folgendes Programm geschrieben
#include "stdafx.h"
#include<alc.h>
#include<al.h>
ALuint s[1];
ALuint Q[1];
int _tmain(int argc, _TCHAR* argv[])
{
ALCdevice *aa;
aa=alcOpenDevice(0);
alGenBuffers(1,s);
unsigned char d[1000];
for(int i=0;i<1000;i++)
{
if((int(i/2)-i)==0)
{
d[i]=255;
}
else
{
d[i]=0;
}}
alBufferData(s[0],AL_FORMAT_MONO8,d,1000,44100);
alGenSources(1,Q);
alSourceQueueBuffers(Q[0],1,s);alSourcePlay(Q[0]);
return 0;
}man sollte eigent lich ein Ton hören. Ich glaube ich muss noch ein Listener erzeugen nur wie mach ich das?
Das Programm lässt sich zwar erzeugen und ausfüren doch bei Visual C++ giebt es folgende Fehlermeldungen."1.exe": "D:\Visual C\1\Release\1.exe" geladen, Symbole wurden geladen.
"1.exe": "C:\WINDOWS\system32\ntdll.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\kernel32.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\OpenAL32.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\winmm.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\advapi32.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\rpcrt4.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\secur32.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\gdi32.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\user32.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\msvcr100.dll" geladen, Symbole wurden geladen.
"1.exe": "C:\WINDOWS\system32\imm32.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\guard32.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\version.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\fltlib.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\msvcrt.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\wdmaud.drv" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\setupapi.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\wintrust.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\crypt32.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\msasn1.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\imagehlp.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\setupapi.dll" entladen.
"1.exe": "C:\WINDOWS\system32\msacm32.drv" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\msacm32.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\midimap.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\wrap_oal.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\ole32.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\dsound.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\setupapi.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\setupapi.dll" entladen.
"1.exe": "C:\WINDOWS\system32\setupapi.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\setupapi.dll" entladen.
"1.exe": "C:\WINDOWS\system32\setupapi.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\setupapi.dll" entladen.
"1.exe": "C:\WINDOWS\system32\uxtheme.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\MSCTF.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\clbcatq.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\comres.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\oleaut32.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\setupapi.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\setupapi.dll" entladen.
"1.exe": "C:\WINDOWS\system32\ksuser.dll" geladen, Cannot find or open the PDB file
Der Thread 'Win32-Thread' (0x390) hat mit Code 0 (0x0) geendet.
Der Thread 'Win32-Thread' (0xefc) hat mit Code 0 (0x0) geendet.
"1.exe": "C:\WINDOWS\system32\setupapi.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\setupapi.dll" entladen.
Der Thread 'Win32-Thread' (0xee8) hat mit Code 0 (0x0) geendet.
Der Thread 'Win32-Thread' (0xf08) hat mit Code 0 (0x0) geendet.
"1.exe": "C:\WINDOWS\system32\wrap_oal.dll" entladen.
"1.exe": "C:\WINDOWS\system32\setupapi.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\setupapi.dll" entladen.
"1.exe": "C:\WINDOWS\system32\setupapi.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\setupapi.dll" entladen.
"1.exe": "C:\WINDOWS\system32\setupapi.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\setupapi.dll" entladen.
"1.exe": "C:\WINDOWS\system32\wrap_oal.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\setupapi.dll" geladen, Cannot find or open the PDB file
"1.exe": "C:\WINDOWS\system32\setupapi.dll" entladen.
Der Thread 'Win32-Thread' (0xe30) hat mit Code 0 (0x0) geendet.
Der Thread 'Win32-Thread' (0xf10) hat mit Code 0 (0x0) geendet.
Der Thread 'Win32-Thread' (0xf04) hat mit Code 0 (0x0) geendet.
Das Programm "[2464] 1.exe: Systemeigen" wurde mit Code 0 (0x0) beendet.Wo liegt der Fehler?
-
Ich seh keinen Fehler. Dein Programm beendet ganz normal, so wie dus programmiert hast...
btw: Verwend bitte Code-Tags.
-
Wußte ich nich was muss ich an dem Programm ändern damit der Ton ausgegeben wird. Ich denke das ich ein Listener erzeugen muss. Kannst du mir erklären wie das geht und was sonst noch fehlt damit der Ton ausgegeben wird?
-
Wie wärs damit!?
-
gegoogelt hab ich schon aber leider nicht herausgefunden warum da kein Ton raus kommt kannst du mir nicht einfach die fehlenen Befehle nennen und ich schau auf Wikpedia nach?
-
Ins Blaue geraten: Evtl musst du noch warten, bevor du dein Programm schließt (getch am Ende)?
-
Stimmt ich musste das Programm solange anhalten bis der Ton kommt auserdem musste ich mit alcCreateContext ein Contex erzeugen und mit alcMakeContextCurrent aktivieren was mich wunder ist dass wenn ich unsigned char verwende und abwechselnd in das Arrea 255 und 0 speichere komm da nur zwei leise knaker raus wenn ich statt char in oder float nehme und damit das selbe tue kommt da ein Pfeifton raus. Was soll man für Variablen verwenden wenn man töne erzeugen möchte?
hier der Cod der ein schönen Pfeifton erzeugt
// 1.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung. // #include<conio.h> #include "stdafx.h" #include<alc.h> #include<al.h> ALuint s[1]; ALuint Q[1]; int _tmain(int argc, _TCHAR* argv[]) { ALCdevice *aa; aa=alcOpenDevice(0); ALCcontext *gg=alcCreateContext(aa,0); alcMakeContextCurrent(gg); alGenBuffers(1,s); unsigned int d[100000]; for(int i=0;i<100000;i++) { if((int(i/2)-(float(i)/float(2)))==0) { d[i]=255; } else { d[i]=0; } } alBufferData(s[0],AL_FORMAT_MONO8,d,100000,44100); alGenSources(1,Q); alSourceQueueBuffers(Q[0],1,s); alSourcePlay(Q[0]); getch(); return 0; }