Wpis z mikrobloga

#programowanie #audio #cpp

Używał ktoś może biblioteki BASS? Bo kompilator zwraca mi uwagę na pewną rzecz i trudno mi się mu dziwić trochę.

Przedostatni argument tej funkcji ma rzekomo typ WASAPIPROC:
http://www.un4seen.com/doc/#basswasapi/BASS_WASAPI_Init.html

Tylko jak sobie klikniemy na niego to ukazuje nam się funkcja, która zwraca DWORD:
http://www.un4seen.com/doc/#basswasapi/WASAPIPROC.html

No i kompilator oczywiście nie chce mi tego przyjąć. Co trzeba zrobić?
  • 80
@Khaine: na to wygląda, że używasz BASSa w innej wersji niż tej, do której odnosi się dokumentacja online. Najlepiej zrób tak: kliknij nad BASS_WASAPI_Init>w Visualu kliknij w menu kontekstowym "Go to Definition", potem najedź na WASAPIPROC, intelisense pokaże ci cały prototyp funkcji, jeśli nie to kliknij ponownie "Go to Definition", otworzy się plik *.h, a w nim pewny prototyp WASAPIPROC.

Nie zapominaj, że użycie BASS
a do użytku komercyjnego jest
@JoeBlade: W Qt to robię i wiem, że komercyjny BASS jest płatny, ale nie robię tego komercyjnie.

Nawet kompilator Qt mi przy błędzie mówi, że to jest typ: WASAPIPROC (__cdecl *). Takiej funkcji w ogóle nie ma w tych bibliotekach, bo mi przy próbie wpisywania WASAPIPROC w deklarację nie podpowiada nic innego niż te dwie co są w dokumentacji.
@JoeBlade: Znalazłem funkcję co ma typ WASAPIPROC i takie same argumenty jak tamten callback, ale nie ma jej w dokumentacji. Zrobiłem tak:

WASAPIPROC CALLBACK Recorder(void *buffer, DWORD length, void *user);

Może ruszy.

No teraz mi mówi o tej funkcji, że zwraca funkcję... I to prawda, bo WASAPIPROC to funkcja a nie typ zmiennej.
@JoeBlade: Notepadem otworzyłem, żeby zobaczyć co jest w środku i jest tylko to:

typedef DWORD (CALLBACK WASAPIPROC)(void *buffer, DWORD length, void *user);

Zaś to robi init:

BOOL BASSWASAPIDEF(BASSWASAPIInit)(int device, DWORD freq, DWORD chans, DWORD flags, float buffer, float period, WASAPIPROC *proc, void *user);

@psychob: Nie, tak wygląda mój przekaz:

&AudioCaptureBASS::WasapiProc

Wyłuskuję adres i mu daję.
@Khaine: znalazłem Twój wczorajszy temat QtCentre ( ͡° ͜ʖ ͡°)

Proponuję, abyś ścieżki do libków umieścił w cudzysłowiu:

LIBS += -lbass
LIBS += **-L"C:/BASS/x64"** lub **-L"C:\BASS\x64"**
INCLUDEPATH += C:/BASS/c lub **C:\BASS\c**

LIBS += -lbasswasapi
LIBS += **-L"C:/BASSWASAPI/x64"**
INCLUDEPATH += C:/BASSWASAPI/c

LIBS += -lbassenc
LIBS += **-L"C:/BASSENC/x64"**
INCLUDEPATH += C:/BASSENC/c