Skocz do zawartości

Allegro Mini Problem DLL


WilkAss

Rekomendowane odpowiedzi

#include <allegro.h>

#define funkcja extern "C" __declspec(dllexport)
/*
...
*/
funkcja double ZiemniakDzwiek_Wylacz_Dzwiek( char* dzwiek )
{
        stop_sample(dzwiek);
}

Może ktoś powiedzieć co robię źle?

Jak wpisze zamiast dzwiek coś innego to spoko działa :/ Ale jak to co ma wpisywać uzytkownik DLL'a(ten char* ) :/ Tak jest zawsze przy grafikach,dźwiękach,ścieżkach etc ;/ Może ktoś powiedzieć jak to zrobić?

Odnośnik do komentarza
Udostępnij na innych stronach

ale do dokumentacji to w ogóle nie zajrzałeś ;/ jednak nie będą z Ciebie ludzie póki nie zapoznasz sie z umiejętnością czytania dokumentacji :P

http://www.allegro.cc/manual/api/digital-s...nes/stop_sample

Odnośnik do komentarza
Udostępnij na innych stronach

Nie rozumiesz o co mi chodzi :) Chodzi o to że jak kaze zatrzymac zmienną char to nie zatrzymuje tylko błąd wywala :/ Dll się nie kompiluje ;/ A jak byle co byle nie ten char to odrazu się kompiluje :/ to ja coś muszę źle pisać bo funkcja jest na pewno dobra ;/ może zamiast char* dać int? ale gdzie...toć to nie możliwe :/

Odnośnik do komentarza
Udostępnij na innych stronach

łojezu, Ty nie rozumiesz - jakim cudem chcesz przekazać wskaźnik na cstring funkcji która potrzebuuje wskaźnik na sample? :0 dla tego mówie abyś pierw czytał dokumentacje, bo żadna funkcja nie zrobi się taka jaką Ty chcesz. Nie funkcja się dostosowuje do Ciebie a Ty do funkcji :P przeczytaj wać tą dokumentacje, dokłaniej wpis o tej funkcji a zrozumiesz (pewnie) co robisz źle.

Odnośnik do komentarza
Udostępnij na innych stronach

ehh...no nie wiem :D mam se kod(nie działa xD)

funkcja double ZiemniakDzwiek_Dodaj_Dzwiek( char* dzwiek, char* Sciezka )
{
        SAMPLE *dzwiek = NULL;
        dzwiek = load_sample(Sciezka);
        return 0;
}

i ja nie wiem jak to inaczej zrobić :/ Uczyłem się z tego arta : https://gmclan.org/index.php?czytajart=36. Z winapi nie ma problemów nigdy...tylko te allegro...xD Możesz powiedzieć dokładnie co robię źle? Wiem że coś z char*...

Odnośnik do komentarza
Udostępnij na innych stronach

Panie, masz tam definicje 2 zmiennych tej samej nazwy: "dzwiek" - w argumencie i w ciele funkcji. nie można tak.

// funkcja laduje dzwiek i zwraca wskaznik na niego
funkcja double ZiemniakDzwiek_Dodaj_Dzwiek( char* Sciezka )
{
        SAMPLE *dzwiek = NULL;
        dzwiek = load_sample(Sciezka);
        return (double)(unsigned int)dzwiek; // rzutujemy wskaznik do double
}

// funkcja stopuje dzwiek podajac jej wskaznik na sample
funkcja double ZiemniakDzwiek_Wylacz_Dzwiek( double dzwiek )
{
        stop_sample((SAMPLE*)(unsigned int)dzwiek); // rzutujemy double na wskaznik
        return 1;
}

 

ale ze wskaznikami jest o tyle niebezpiecznie ze jesli masz inne struktury ktore tez rzutujesz wskaznik na double i odwrotnie to jesli pomylisz wskazniki (typy) to wykrzaczy aplikacje.

Odnośnik do komentarza
Udostępnij na innych stronach

Prosze bardzo :) tak czy inaczej zrob sobie liste wskaznikow na sample w ktorej bedziesz trzymal wskazniki na wszystkie zaladowane sample, dzieki czemu bedziesz mogl za jednym razem na zakonczenie pracy dlla usunac z pamieci trzymane sample, bez koniecznosci usuwania kazdego po kolei.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...