Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Razangann
11 / 11 / 0
Регистрация: 11.01.2013
Сообщений: 135
#1

Несовместимость типов - C++

19.01.2013, 11:09. Просмотров 465. Ответов 4
Метки нет (Все метки)

В справке по BASS.DLL есть пример который выглядит так:
C++
1
2
3
4
5
6
7
8
9
FILE *file;
...
// the recording callback
DWORD CALLBACK MyRecordingWriter(void *buf, DWORD len, DWORD user) {
    fwrite(buf,1,len,file); // write the buffer to the file
    return TRUE; // continue recording
}
...
BASS_RecordStart(44100,0,&MyRecordingWriter,0); // start recording
Но...при компиляции вылетает такая ошибка

аргумент типа "DWORD (__stdcall *)(void *buf, DWORD len, DWORD user)" несовместим с параметром типа "RECORDPROC *"
В чем может быть проблема?=)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2013, 11:09     Несовместимость типов
Посмотрите здесь:

несовместимость типов - C++
помогите разобраться, передаю в функцию update_table массив указателей на фигуры, для каждой из которых должна вызываться add_to_table....

Найти предельные значения для целочисленных типов. Не использовать заранее определенные константы границ типов. - C++
Буду благодарен! Найти предельные значения для целочисленных типов. Не использовать заранее определенные константы границ типов.

Разработайте перегружены функции, в которые передаются два параметра типов int или float и три параметра типов - C++
Разработайте перегружены функции, в которые передаются два параметра типов int или float и три параметра типов int или float и возвращают...

Несовместимость программы - C++
Сделал программу С++ на Net Framework 4.5, OpenGL и Windows Forms На компьютерах,где есть Visual Studio работает нормально а там где не...

Несовместимость с char* - C++
#define BHOP_KEY 'c' struct module_t { DWORD dwBase, dwSize; }; class CDebugger {

Несовместимость параметра double - C++
Выдаёт ошибку Ошибка 1 error C2664: "double CalcOptim(int,double ,double ,double,int,int,std::string,double)": невозможно преобразовать...

Приведение типов - C++
в GUI ни int str = static_convert<int>(Edit1->Text) ни int str = (int)Edit1->Text не приводит : E2034 Cannot convert...

Преобразование типов - C++
Как преобразовать массив char message в строку char *strmessage ?????

Приведение типов - C++
Делаю программу, которая кроме всего прочего должна отсортировать массив. Использую для этого qsort. Вот что получилось: ...

Конвертация типов с++ - C++
int p=255; string s=p; в результате s='я', а как внести p в s как число, чтобы s={'2','5','5'} ? только посимвольно или можно как-то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John Prick
773 / 706 / 129
Регистрация: 27.07.2012
Сообщений: 2,022
Завершенные тесты: 3
19.01.2013, 11:22     Несовместимость типов #2
C++
1
RECORDPROC *
Найди объявлние этого типа. По идее, это тип указателя на функцию, который нужно передать в BASS_RecordStart. Возможно твоя функция MyRecordingWriter не совпадает по типу возвращаемого значения и типам аргументов с той, которую нужно передать.
Razangann
11 / 11 / 0
Регистрация: 11.01.2013
Сообщений: 135
19.01.2013, 11:29  [ТС]     Несовместимость типов #3
А что если записать функцию как
C++
1
RECORDPROC CALLBACK MyRecordingWriter(void *buf, DWORD len, DWORD user);
Что вообще должна возвращать функция типа RECORDPROC?=) я думал TRUE или FALSE. Если FALSE, то запись останавливается....но нееет, в ответ "использование функции, возвращающей функцию, не допускается"
Помогите пожалуйста=( уже недели 2 мучаюсь=((
John Prick
773 / 706 / 129
Регистрация: 27.07.2012
Сообщений: 2,022
Завершенные тесты: 3
19.01.2013, 11:59     Несовместимость типов #4
C++
1
Что вообще должна возвращать функция типа RECORDPROC?
Сомневаюсь, что кто-то на этом форуме даст ответ.
Так, как вы записали - не пойдёт. RECORDPROC - это тип указателя на функцию, имя которой вы передаёте в BASS_RecordStart.
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
19.01.2013, 12:43     Несовместимость типов #5
возможно дело в соглашении о вызове (calling convention)
__stdcall
это кажется зависит от макроса CALLBACK, который в свою очередь разворачивается в то или иное соглашение в зависимости от других макросов. как глобальных так и тех, которые могут появлятся в других файлах. а это может в свою очередь зависить от порядка включения всяких виндовых инклудов и чего-то еще.

короче все, что выше наверно не актуально. вот нормальный пример. нужно просто правильную сигнатуру для функции иметь:
http://www.un4seen.com/doc/#bass/RECORDPROC.html

C++
1
2
3
4
5
6
7
8
9
10
FILE *file;
...
// the recording callback
BOOL CALLBACK MyRecordingWriter(HRECORD handle, void *buf, DWORD len, void *user)
{
    fwrite(buf, 1, len, file); // write the buffer to the file
    return TRUE; // continue recording
}
...
HRECORD record=BASS_RecordStart(44100, 2, 0, &MyRecordingWriter, 0); // start recording
Yandex
Объявления
19.01.2013, 12:43     Несовместимость типов
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru