Autor Wątek: Dodawanie plików dll w Visual Studio.  (Przeczytany 4302 razy)

Offline Moriquendi

  • Użytkownik

# Lipiec 22, 2009, 22:08:30
Chciałem dodać dźwięk do mojej gry. Zdecydowałem się na OpenAL (bardziej do gier 3D, ale do 2D nie mogłem nic znaleźć).
Skopiowałem przykładowy kod z tej strony:
http://www.edenwaith.com/products/pige/tutorials/openal.php
i skompilowałem. Niestety wyskoczył błąd:
Cytuj
fatal error C1083: Cannot open include file: 'AL/al.h': No such file or directory

Muszę chyba dodać gdzieś te pliki dll OpenAL (pobrałem stąd: http://connect.creativelabs.com/developer/Wiki/OpenAL%20Installer%20for%20Windows.aspx).

Problem w tym, że nie wiem jak to zrobić w Visual Studio 2008.
Gdzie mam te dllki skopiować? Czy zmieniać coś w ustawieniach projektu?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Super Mario

  • Gość
# Lipiec 22, 2009, 22:16:47
Ok., rozumiem, że temperatura na zewnątrz nie jest odpowiednia dla przeciętnego Polaka ale jaki związek ma to:
Cytuj
fatal error C1083: Cannot open include file: 'AL/al.h': No such file or directory

z tym

dopisek własny: z tego powodu
Cytuj
Muszę chyba dodać gdzieś te pliki dll

Sorry, ale forumowiczom, którzy mają więcej niż 100 postów i piszą takie bzdury hydraulik mówi stanowcze "NIE NIE NIE"  ;D

Offline Rares

  • Użytkownik
    • Moja strona

# Lipiec 22, 2009, 22:17:16
To nie chodzi o pliki DLL, tylko o pliki nagłówkowe OpenAL. Wrzuć do folderu include (standardowo: C:\Program Files\Microsoft Visual Studio 9.0\VC\include) pliki z rozszerzeniem .h. Jeśli kopiujesz tam nowy folder, np. o nazwie: "OAL" to w na początku kodu dodaj dyrektywę:

Kod: (cpp) [Zaznacz]
#include <OAL/al.h>

Offline Zielony

  • Użytkownik
    • Ghurund Engine

# Lipiec 22, 2009, 22:20:25
Czytaj błędy: "Cannot open include file" = "Nie mogę otworzyć dołączanego pliku", a to znaczy, że nie skompilowałeś tego kodu. To jest błąd jeszcze na etapie preprocessingu, więc błąd masz w ścieżkach do plików nagłówkowych. A co do plików .dll, to wystarczy je skopiować do miejsca, z którego będziesz uruchamiał gotowy program. Z tego co wiem, to OpenAL sam sobie poradzi z uzyskaniem dostępu do funkcji zapisanych w tej bibliotece.

edit: za późno ;]

Offline Moriquendi

  • Użytkownik

# Lipiec 22, 2009, 22:39:50
Sorry, ale forumowiczom, którzy mają więcej niż 100 postów i piszą takie bzdury hydraulik mówi stanowcze "NIE NIE NIE"  ;D
A co posty mają do wiedzy. Ty masz 5 postów tutaj, ale pewnie na innych forach masz kilkaset postów. Możliwe też, że studiujesz jakiś kierunek informatyczny.

////
Dzięki za odpowiedź.
Pojawił się jednak kolejny problem.
Dodałem tą bibliotekę al.h. Potem zaczął jęczeć o ault.h, aluttypes.h  , altypes.h. Wszystkie dodałem, ale teraz powyskakiwały przeróżne ostrzeżenia i błędy:

C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/altypes.h(8) : error C2371: 'ALbyte' : redefinition; different basic types
1>        C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/al.h(48) : see declaration of 'ALbyte'
1>C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/altypes.h(70) : warning C4005: 'AL_SOURCE_TYPE' : macro redefinition
1>        C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/al.h(228) : see previous definition of 'AL_SOURCE_TYPE'
1>C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/altypes.h(73) : warning C4005: 'AL_SOURCE_RELATIVE' : macro redefinition
1>        C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/al.h(95) : see previous definition of 'AL_SOURCE_RELATIVE'
1>C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/altypes.h(129) : warning C4005: 'AL_STREAMING' : macro redefinition
1>        C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/al.h(230) : see previous definition of 'AL_STREAMING'
1>C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/alut.h(8) : warning C4005: 'ALAPI' : macro redefinition
1>        C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/al.h(34) : see previous definition of 'ALAPI'
1>C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/alut.h(9) : warning C4005: 'ALAPIENTRY' : macro redefinition
1>        C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/al.h(35) : see previous definition of 'ALAPIENTRY'
1>.\gra- opengl.cpp(18) : error C2146: syntax error : missing ';' before identifier 'listenerOri'
1>.\gra- opengl.cpp(18) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>.\gra- opengl.cpp(18) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>.\gra- opengl.cpp(23) : error C2146: syntax error : missing ';' before identifier 'buffer'
1>.\gra- opengl.cpp(23) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>.\gra- opengl.cpp(23) : error C2065: 'NUM_BUFFERS' : undeclared identifier
1>.\gra- opengl.cpp(23) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>.\gra- opengl.cpp(24) : error C2146: syntax error : missing ';' before identifier 'source'
1>.\gra- opengl.cpp(24) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>.\gra- opengl.cpp(24) : error C2086: 'int Aluint' : redefinition
1>        .\gra- opengl.cpp(23) : see declaration of 'Aluint'
1>.\gra- opengl.cpp(24) : error C2065: 'NUM_SOURCES' : undeclared identifier
1>.\gra- opengl.cpp(24) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>.\gra- opengl.cpp(25) : error C2065: 'NUM_ENVIRONMENTS' : undeclared identifier
1>.\gra- opengl.cpp(35) : error C2664: 'alListenerfv' : cannot convert parameter 2 from 'int [6]' to 'const ALfloat *'
1>        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>.\gra- opengl.cpp(40) : error C2065: 'NUM_BUFFERS' : undeclared identifier
1>.\gra- opengl.cpp(52) : error C2065: 'al_bool' : undeclared identifier
1>.\gra- opengl.cpp(56) : error C2065: 'NUM_SOURCES' : undeclared identifier
Ktoś coś wie co  z tym zrobić?

Down@
Ale błędów to nie usunie :P

Edit:
znalazłem to:
Cytuj
In the Win32 SDK Libraries folder, add these libraries: OpenGL32.lib, Glu32.lib, glut32.lib. These libraries can be found in this folder: C:\Program Files\Metrowerks\CodeWarrior\Win32-x86 Support\Libraries\Win32 SDK\. If you are also working with OpenAL, add ALut.lib and OpenAL32.lib. These two libraries are found at C:\Program Files\OpenAL 1.0 Software Development Kit\libs. Keep in mind that different versions of software may place files in different locations. If all else fails and you know that you should have the proper files somewhere on your computer, do a search to find the hiding files.
Tylko, że nie mogę znaleźć ALut.lib. Mam OpenAL 1.1 i w tej wersji nie ma dołączonego tego liba :|
« Ostatnia zmiana: Lipiec 22, 2009, 23:24:30 wysłana przez Moriquendi »

Offline vashpan

  • Użytkownik
    • Strona

# Lipiec 22, 2009, 22:42:23
@Moriquendi

Zamiast kopiowac naglowki, lepiej ustawic sciezki do nich ( do katalogu gdzie zainstalowales OpenAL ) w VS. ( Tools->Options->Projects and Solutions->VC++ Directories->(Show directories for: Include Files)->klik(ikona nowego folderu)->klik(trzy kropki)->wybieramy katalog

OpenAL to biblioteka dzwiekowa, co ma do tego 2D czy 3D ( chyba ze ci chodzi o dzwiek 3D, ale o czyms takim jak dzwiek 2D nie slyszalem, chyba ze to stereo ;) )

@Zielony

Nie tylko OpenAL poradzi sobie z "uzyskaniem dostepu do funkcji" tylko kazda biblioteka dll w ten sposob moze dzialac.

Offline Capad

  • Użytkownik

# Lipiec 23, 2009, 00:10:17
Ijeszcze oczywiście pliki *.lib musisz skopiować do katalogu "...\VC\lib" lub podać ścieżkę w opcjach :)

Offline Esidar

  • Użytkownik

# Lipiec 23, 2009, 01:09:29
Zamiast kopiowac naglowki, lepiej ustawic sciezki do nich ( do katalogu gdzie zainstalowales OpenAL ) w VS. ( Tools->Options->Projects and Solutions->VC++ Directories->(Show directories for: Include Files)->klik(ikona nowego folderu)->klik(trzy kropki)->wybieramy katalog
Ijeszcze oczywiście pliki *.lib musisz skopiować do katalogu "...\VC\lib" lub podać ścieżkę w opcjach :)
A jeszcze the very best metod, to trzymanie plików .h oraz .lib w katalogu z projektem, bo wtedy a) unikniemy problemów kompilacji różnych projektów pod róznymi wersjami bibliotek b) możemy sobie przenieść cały gotowy projekt wherever na dowolny inny komp, bez instrukcji typu "a potem ustaw w opcjach ... skopiuj, a jak masz Viste to z ustawieniami admina, potem przejdź do ..., chyba że już masz to wtedy sprawdź wersję...", "sory dalej nie działa", "no to nie wiem"

Offline Moriquendi

  • Użytkownik

# Lipiec 23, 2009, 10:59:42
Dodałem wszystkie .h i liby, ale nadal błędy mi wywala...
W tej wersji OpenAL 1.1 są takie liby: OpenAL32.lib i dwa katalogi EFX-Util_MTDLL i EFX-Util_MT. W każdym z tych katalogów jest EFX-Util.lib

Dodałem ten OpenAL32.lib i próbowałem te dwa inny liby, ale nie działa dalej....

Edit:
Te pliki dll też mam gdzieś wsadzić?

Down@
Nic nie dało.
« Ostatnia zmiana: Lipiec 23, 2009, 17:42:51 wysłana przez Moriquendi »

Offline Capad

  • Użytkownik

# Lipiec 23, 2009, 17:24:25
Do katalogu z exe'kiem bądź do do C:\Windows\System32

Offline vashpan

  • Użytkownik
    • Strona

# Lipiec 23, 2009, 20:31:54
Do katalogu z exe'kiem bądź do do C:\Windows\System32

Co do drugiej opcji - zdecydowanie nie radze ! Takie reczne kopiowanie roznych bibliotek bez ladu i skladu moze sie zle skonczyc. I dla nas i dla systemu.

Offline K'Aviash

  • Użytkownik

# Lipiec 23, 2009, 20:47:30
Do katalogu z exe'kiem bądź do do C:\Windows\System32

Co do drugiej opcji - zdecydowanie nie radze ! Takie reczne kopiowanie roznych bibliotek bez ladu i skladu moze sie zle skonczyc. I dla nas i dla systemu.

no i bałagan się robi...

Offline Moriquendi

  • Użytkownik

# Lipiec 23, 2009, 22:48:42
Bałagan, nie bałagan, ale error nie śpi panowie  :P

Napisałem taki kod:
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
#include <cstdlib>
//#include "AL/alut.h"

#include "AL/al.h"
#include "AL/alut.h"
No to mi wywala tylko błąd, że jest redefiniton Albyte.
Umieściłem w komentarz te linie w jakimś pliku nagłówkowym:
//typedef signed char ALbyte;i projekt się kompiluje.
A jak usunę z komentarzy resztę kodu (skopiowaną z tutoriala) to wyskakują błędy:

1>C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/altypes.h(70) : warning C4005: 'AL_SOURCE_TYPE' : macro redefinition
1>        C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/al.h(228) : see previous definition of 'AL_SOURCE_TYPE'
1>C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/altypes.h(73) : warning C4005: 'AL_SOURCE_RELATIVE' : macro redefinition
1>        C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/al.h(95) : see previous definition of 'AL_SOURCE_RELATIVE'
1>C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/altypes.h(129) : warning C4005: 'AL_STREAMING' : macro redefinition
1>        C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/al.h(230) : see previous definition of 'AL_STREAMING'
1>C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/alc.h(14) : warning C4005: 'ALAPI' : macro redefinition
1>        C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/al.h(34) : see previous definition of 'ALAPI'
1>C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/alc.h(15) : warning C4005: 'ALAPIENTRY' : macro redefinition
1>        C:\Program Files\Microsoft Visual Studio 9.0\VC\include\AL/al.h(35) : see previous definition of 'ALAPIENTRY'
1>c:\users\michał\documents\visual studio 2008\projects\gra- opengl\gra- opengl\muzyka.h(18) : error C2146: syntax error : missing ';' before identifier 'listenerOri'
1>c:\users\michał\documents\visual studio 2008\projects\gra- opengl\gra- opengl\muzyka.h(18) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\michał\documents\visual studio 2008\projects\gra- opengl\gra- opengl\muzyka.h(18) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\michał\documents\visual studio 2008\projects\gra- opengl\gra- opengl\muzyka.h(24) : error C2146: syntax error : missing ';' before identifier 'buffer'
1>c:\users\michał\documents\visual studio 2008\projects\gra- opengl\gra- opengl\muzyka.h(24) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\michał\documents\visual studio 2008\projects\gra- opengl\gra- opengl\muzyka.h(24) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\michał\documents\visual studio 2008\projects\gra- opengl\gra- opengl\muzyka.h(25) : error C2146: syntax error : missing ';' before identifier 'source'
1>c:\users\michał\documents\visual studio 2008\projects\gra- opengl\gra- opengl\muzyka.h(25) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\michał\documents\visual studio 2008\projects\gra- opengl\gra- opengl\muzyka.h(25) : error C2086: 'int Aluint' : redefinition
1>        c:\users\michał\documents\visual studio 2008\projects\gra- opengl\gra- opengl\muzyka.h(24) : see declaration of 'Aluint'
1>c:\users\michał\documents\visual studio 2008\projects\gra- opengl\gra- opengl\muzyka.h(25) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\michał\documents\visual studio 2008\projects\gra- opengl\gra- opengl\muzyka.h(39) : error C2664: 'alListenerfv' : cannot convert parameter 2 from 'int [6]' to 'const ALfloat *'
1>        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\michał\documents\visual studio 2008\projects\gra- opengl\gra- opengl\muzyka.h(45) : error C2664: 'alGenBuffers' : cannot convert parameter 2 from 'int [1]' to 'ALuint *'
1>        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>c:\users\michał\documents\visual studio 2008\projects\gra- opengl\gra- opengl\muzyka.h(57) : error C2065: 'al_bool' : undeclared identifier
1>c:\users\michał\documents\visual studio 2008\projects\gra- opengl\gra- opengl\muzyka.h(63) : error C2664: 'alGenSources' : cannot convert parameter 2 from 'int [1]' to 'ALuint *'
1>        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

Zaraz zginę...
Nie moglibyście podesłać przykładowy projekt z OpenAL dla Visual Studio 2008?
Bo już nie mam pojęcia co mogę mieć źle. Wszystkie możliwe nagłówki jakie znalazłem to skopiowałem. To samo z dll'kami i libami. W ustawieniach projektu dodałem liby. No ja po prostu nie wiem już..

Offline asasm

  • Użytkownik

# Lipiec 23, 2009, 23:59:35
Na tej stronie z której skorzystałeś http://www.edenwaith.com/products/pige/tutorials/openal.php#code na samym dole są odnośniki i przykłady kodów dla Windows
http://www.edenwaith.com/products/pige/src/main-openal.c oraz skompilowany kod
http://www.edenwaith.com/products/pige/demos/openal-demo.exe

Czy to naprawdę takie trudne przeczytać CAŁY artykuł i odnośniki do niego ?
http://www.edenwaith.com/products/pige/links.php#openal

osobiście ściągnąłem OPENAL SDK oraz freealut skopiowałem przykładowy kod z pierwszego odnośnika, wyrzuciłem z nagłówków alltypes.h i alu.h dołączyłem nagłówki do include'ów w Visualu i liby do libów i wszystko się skompilowało i otrzymałem takie samo demo jak w 3 odnośniku tylko musiałem dołączyć alut.dll bo nie skompilowałem jej statycznie. Więc jeśli nie działa, to raczej z powodu indolencji autora wątku.
Kod który żywcem skopiowałem
http://nopaste.gamedev.pl?&id=4158

Offline Zene

  • Użytkownik
    • Zenedith’s dev blog

# Lipiec 24, 2009, 00:03:18