На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ElcnU
  
> PlaySound , Из памяти
    Компилятор ругается ( Type error in argument 1 to 'PlaySoundW'; found 'unsigned char *', expected 'const wchar_t *'.)
    на
    PlaySound ( buf , NULL, SND_MEMORY) ;
    buf массив с вайв файлом
    Что не так?
    Это типа Си :)
      Пытаешься в уникодную функцию передать неюникодные данные.

      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, то у тебя компилятор ругаться не будет, но работать все равно ничего не будет :)
        Цитата 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.
        Это написано тут.
        Я надеялся передать указатель на буфер с содержимым , включая заголовок. На ВБ у меня это прокатило , на Вин ХР для большого брата.
          Ну в таком случае я бы сказал, что ты пытаешься линковаться с неправильным SDK.
          Обрати внимание, что по трвоей ссылка функция определена так:
          Цитата
          BOOL WINAPI PlaySound(
          LPCSTR pszSound,
          HMODULE hmod,
          DWORD fdwSound
          );


          а тут так:
          Цитата
          BOOL PlaySound(
          LPCTSTR pszSound,
          HMODULE hmod,
          DWORD fdwSound
          );


          проверь правильность путей к хидерам и либам.
          Сообщение отредактировано: Fester -
            Цитата Fester @
            проверь правильность путей к хидерам и либам.

            Это все нормально.
            Прочитал , что среда PellesC , на которой пишу, имеет некоторые ограничения. Возможно , это оно.
            А если как-нибудь подправить прототип в хидере , чтобы компилятор перестал ругаться, поможет?
            Или либа тоже может быть "кастрированной"?

            Инсталяшка этого PellesC -а , всего 10мб , не хочется связываться с виндовозскими монстрами.
              Цитата Alexei @
              А если как-нибудь подправить прототип в хидере , чтобы компилятор перестал ругаться, поможет?

              Зачем править хидер? :)
              Вызывай не PlaySound, а PlaySoundA :)
                Цитата Fester @
                а PlaySoundA

                А чем это будет слаще редьки ? :blink:

                В любом случае, ругается еще больше.

                ПС Помоему , в wm только юникод.
                Сообщение отредактировано: Alexei -
                  Цитата 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 только юникод.

                  С чего ты это взял?
                    Цитата Fester @
                    На что ругается?

                    На "А" .
                    Вот так: "POLINK: error: Unresolved external symbol 'PlaySoundA'."

                    Цитата Fester @
                    С чего ты это взял?

                    Где-то читал.

                    Цитата Alexei @
                    а функция ожидает типа const wchar_t *.

                    Но мне нужно чтобы она ожидала указатель на кусок памяти.
                    Сообщение отредактировано: Alexei -
                      Цитата Alexei @
                      Вот так: "POLINK: error: Unresolved external symbol 'PlaySoundA'."

                      ну не подключил нужную либу :)


                      Цитата Alexei @
                      Но мне нужно чтобы она ожидала указатель на кусок памяти.

                      Типа "указатель на кусок памяти" не существует.

                      int * - указатель на кусок памати
                      double * - указатель на кусок памати
                      char * - указатель на кусок памати
                      wchar_t * - указатель на кусок памати
                      char ** - указатель на кусок памати



                      Пройди по собственной ссылке и увидь определение
                      Цитата
                      BOOL WINAPI PlaySound(
                      LPCSTR pszSound,
                      HMODULE hmod,
                      DWORD fdwSound
                      );


                      Диагноз: Ты подключаешь непонятно какие либы или используешь SDK от другой системы.
                        Цитата Fester @
                        ну не подключил нужную либу

                        Подключил.
                        Цитата Fester @
                        Ты подключаешь непонятно какие либы

                        Понятно какие: coredll.lib
                        Кстати, "PlaySoundA" в ней нет, это косвенно подтверждает :
                        Цитата
                        в wm только юникод


                        Дальнейшее подобное "помогание" , с вашей стороны , считаю безсмысленным .
                        Спасибо.
                          Цитата Alexei @
                          PlaySound ( buf , NULL, SND_MEMORY) ;

                          Надо было так, спасибо добрым людям.
                          PlaySound ((LPCWSTR) buf , NULL, SND_MEMORY) ;

                          Однако, PlaySound на телефоне не играет. :(
                          На эмуляторе телефона все отлично , а живьем нет. :wall:
                            Цитата Alexei @
                            Однако, PlaySound на телефоне не играет.

                            Заиграла. Оказалось путь к файлу надо писать на чистейшем русском, типа :"Карта памяти" .
                            Хорошо еще, что на ББ не надо: Це:\ :D
                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0377 ]   [ 15 queries used ]   [ Generated: 2.05.24, 10:16 GMT ]