Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.141.41.187] |
|
Сообщ.
#1
,
|
|
|
Компилятор ругается ( Type error in argument 1 to 'PlaySoundW'; found 'unsigned char *', expected 'const wchar_t *'.)
на PlaySound ( buf , NULL, SND_MEMORY) ; buf массив с вайв файлом Что не так? Это типа Си |
Сообщ.
#2
,
|
|
|
Пытаешься в уникодную функцию передать неюникодные данные.
PS: Не понятно, что значит "из памяти"? Цитата The PlaySound function plays a sound specified by the given file name, resource, or system event. (A system event may be associated with a sound in the registry or in the WIN.INI file.) В buf должно быть имя файла, ресурса или эвента, а не содержимое вайв файла Так что даже если ты будешь успользоваться PlaySoundA, то у тебя компилятор ругаться не будет, но работать все равно ничего не будет |
Сообщ.
#3
,
|
|
|
Цитата Fester @ В buf должно быть имя файла, ресурса или эвента, а не содержимое вайв файла А как же это :SND_MEMORY A sound event's file is loaded in RAM. The parameter specified by pszSound must point to an image of a sound in memory. Это написано тут. Я надеялся передать указатель на буфер с содержимым , включая заголовок. На ВБ у меня это прокатило , на Вин ХР для большого брата. |
Сообщ.
#4
,
|
|
|
Ну в таком случае я бы сказал, что ты пытаешься линковаться с неправильным SDK.
Обрати внимание, что по трвоей ссылка функция определена так: Цитата BOOL WINAPI PlaySound( LPCSTR pszSound, HMODULE hmod, DWORD fdwSound ); а тут так: Цитата BOOL PlaySound( LPCTSTR pszSound, HMODULE hmod, DWORD fdwSound ); проверь правильность путей к хидерам и либам. |
Сообщ.
#5
,
|
|
|
Цитата Fester @ проверь правильность путей к хидерам и либам. Это все нормально. Прочитал , что среда PellesC , на которой пишу, имеет некоторые ограничения. Возможно , это оно. А если как-нибудь подправить прототип в хидере , чтобы компилятор перестал ругаться, поможет? Или либа тоже может быть "кастрированной"? Инсталяшка этого PellesC -а , всего 10мб , не хочется связываться с виндовозскими монстрами. |
Сообщ.
#6
,
|
|
|
Цитата Alexei @ А если как-нибудь подправить прототип в хидере , чтобы компилятор перестал ругаться, поможет? Зачем править хидер? Вызывай не PlaySound, а PlaySoundA |
Сообщ.
#7
,
|
|
|
Цитата Fester @ а PlaySoundA А чем это будет слаще редьки ? В любом случае, ругается еще больше. ПС Помоему , в wm только юникод. |
Сообщ.
#8
,
|
|
|
Цитата Alexei @ А чем это будет слаще редьки ? Ты свое 1-е сообщение еще поснишь? Цитата Alexei @ Type error in argument 1 to 'PlaySoundW'; found 'unsigned char *', expected 'const wchar_t *'.) тут говорится, что ты в юникодную функцию PlaySoundW пытаешься передать ANSI переменную типа unsigned char *, а функция ожидает типа const wchar_t *. Цитата Alexei @ В любом случае, ругается еще больше. На что ругается? Я просто сегодня телепатор дома забыл Цитата Alexei @ ПС Помоему , в wm только юникод. С чего ты это взял? |
Сообщ.
#9
,
|
|
|
Цитата Fester @ На что ругается? На "А" . Вот так: "POLINK: error: Unresolved external symbol 'PlaySoundA'." Цитата Fester @ С чего ты это взял? Где-то читал. Цитата Alexei @ а функция ожидает типа const wchar_t *. Но мне нужно чтобы она ожидала указатель на кусок памяти. |
Сообщ.
#10
,
|
|
|
Цитата Alexei @ Вот так: "POLINK: error: Unresolved external symbol 'PlaySoundA'." ну не подключил нужную либу Цитата Alexei @ Но мне нужно чтобы она ожидала указатель на кусок памяти. Типа "указатель на кусок памяти" не существует. int * - указатель на кусок памати double * - указатель на кусок памати char * - указатель на кусок памати wchar_t * - указатель на кусок памати char ** - указатель на кусок памати Пройди по собственной ссылке и увидь определение Цитата BOOL WINAPI PlaySound( LPCSTR pszSound, HMODULE hmod, DWORD fdwSound ); Диагноз: Ты подключаешь непонятно какие либы или используешь SDK от другой системы. |
Сообщ.
#11
,
|
|
|
Цитата Fester @ ну не подключил нужную либу Подключил. Цитата Fester @ Ты подключаешь непонятно какие либы Понятно какие: coredll.lib Кстати, "PlaySoundA" в ней нет, это косвенно подтверждает : Цитата в wm только юникод Дальнейшее подобное "помогание" , с вашей стороны , считаю безсмысленным . Спасибо. |
Сообщ.
#12
,
|
|
|
Цитата Alexei @ PlaySound ( buf , NULL, SND_MEMORY) ; Надо было так, спасибо добрым людям. PlaySound ((LPCWSTR) buf , NULL, SND_MEMORY) ; Однако, PlaySound на телефоне не играет. На эмуляторе телефона все отлично , а живьем нет. |
Сообщ.
#13
,
|
|
|
Цитата Alexei @ Однако, PlaySound на телефоне не играет. Заиграла. Оказалось путь к файлу надо писать на чистейшем русском, типа :"Карта памяти" . Хорошо еще, что на ББ не надо: Це:\ |