MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Проблемы с BASS"
Answer 709391
Ну, предупреждение "assignment from incompatible pointer type" вполне логично. GetProcAddress возвращает указатель на функцию с неопределенным списком параметров, возвращающую int. Приведение к любым другим указателям выведет это предупреждение. Его можно игнорировать.
Что касается Segmentation Fault, у меня ничего такого не наблюдается. BASS_GetVersion, BASS_GetDeviceInfo нормально работают. Либо вы не ту версию DLL-ки подкладываете (32-битную вместо 64-битной или наоборот), либо какая-то локальная проблема с вашей системой.
UPD: На всякий случай, мой рабочий пример:
#include <stdlib.h> #include <stdio.h> #define BASSDEF(f) (WINAPI *f) // define the functions as pointers #include "bass.h" #include <conio.h> void ListDevices() { BASS_DEVICEINFO di; int a; for (a=1;BASS_GetDeviceInfo(a,&di);a++) { if (di.flags&BASS_DEVICE_ENABLED) // enabled output device printf("dev %d: %s\n",a,di.name); } } void main(int argc, char **argv) { HINSTANCE bass=LoadLibrary("BASS.DLL"); // load BASS BASS_Init=GetProcAddress(bass,"BASS_Init"); BASS_GetVersion=GetProcAddress(bass,"BASS_GetVersion"); BASS_GetDeviceInfo=GetProcAddress(bass,"BASS_GetDeviceInfo"); // check the correct BASS was loaded DWORD ver; ver=BASS_GetVersion(); if (HIWORD(ver)!=BASSVERSION) { printf("An incorrect version of BASS was loaded"); return; } else { printf("BASS version is %d\n\n",ver); } ListDevices(); system("pause"); }
Компилируется и успешно работает (выводит список устройств), тестировалось на:
- Windows 7 x64
- GCC 3.4.2, 4.9.2 (32-битный режим)
- BASS 2.4
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.