35 / 35 / 6
Регистрация: 29.08.2009
Сообщений: 183
|
||||||
1 | ||||||
Ошибка создания Device в DirectSound. Не видит namespace Device24.11.2012, 19:44. Показов 2566. Ответов 7
Метки нет (Все метки)
хочу в примитивной игрушке (сделанной не на Direct3D) добавить звуковое оформление через DirectSound.
1. Скачал и установил DirectX SDK 8 и 10 года. 2. прописал в хэдере где хочу использовать DirectSound подключение #include <dsound.h> 3. прописал связь с библеотекой #pragma comment(lib, "dsound.lib")
Использую CodeGear™ RAD Studio 2009 Version 12.0.3170
0
|
24.11.2012, 19:44 | |
Ответы с готовыми решениями:
7
Что означает ошибка device missing or unknow device (-24)? Ошибка: PSI devise listing Bus no. Device No/ Func/ No/ Vendor/Device class Devise Bad DirectSound driver. Please install proper drivers or select another device in configuration Ошибка: Reboot and Select proper Boot device or Insert boot Media in selected Boot device and Pres a key. Надо исправить :( |
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
|
|
24.11.2012, 23:18 | 2 |
ИМХО, ради звука особого смысла в использовании DX нет.
WTF?? Необходимо смотреть в строну интерфейсов (IDirectSound).
1
|
35 / 35 / 6
Регистрация: 29.08.2009
Сообщений: 183
|
||||||||||||||||
25.11.2012, 14:27 [ТС] | 3 | |||||||||||||||
DefineTrueFalse, большого смысла нет и в самой затее, написать игру. Я приследую цель, просто освоить Direct Sound, для дальнейшего использования. Мне нужно одновременно воспроизводить какю-нибудь музыкальную композицию и звуки действий (а действий может быть много) Плодить Player'ы - не вариант.
Вот так вот - компилируется и ни на что не жалуется
Потому что я по книге пытаюсь разобраться , а там вот что написано (книнга по DirectX9). Есть ли зависимость от компилятора?
0
|
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
|
||||||
25.11.2012, 16:22 | 4 | |||||
Кроме компонентов, входящих в поставку, существуют API методы. Так же для работы со звуком существует библиотека BASS (но это уже для справки).
Нужно не подставлять данные, а понимать "что и для чего". В ином случае - это не обучение. Разработчики в разных версиях библиотеки DirectX называют классы, методы и т.п. по разному. Допустим: D3DXCreateFont - из 9ой версии, а D3DX10CreateFont из 10ой. Более того, название методов в объявлении, зависит от определения директив, т.е. в DX9 существует IDirectSound, но если используется ОС Windows XP SP2 или выше, то интерфейс объявляется как IDirectSound8:
1
|
35 / 35 / 6
Регистрация: 29.08.2009
Сообщений: 183
|
||||||
29.11.2012, 14:37 [ТС] | 5 | |||||
Добавил в проект отдельный закголовочный файл с реализацией обозвал (SoundDevice.h /.cpp)
Пока писал в нём программа компилировалась, ошибок в коде не находила (проверял просто на грамматику) Но как только подключил SoundDevice.h в основном файле Main.h ...программа перестала компилироваться ссылаясь на ошибку в заголвочном файле dsound. Я не понимаю, почему он раньше не ругался? И почему только сейчас затребовал запятую...?!
Добавлено через 14 минут Простите за оффтоп, но может это поможет решить проблему: Скажите, такая схема подключений правильная?
0
|
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
|
|||||||||||||||||||||
29.11.2012, 15:53 | 6 | ||||||||||||||||||||
Ранее, Ваши файлы не были подключены к исходному проекту и компилятору не было дела, до происходящего там (образно).
Природа ошибки проста - компилятор не понимает, что такое WAVEFORMATEX и считает, что была допущена синтаксическая ошибка. Для исправления ошибки - необходимо объявление данной структуры. Не буду тянуть и скажу, что это творение MS, а значит описание есть в msdn. В конце статьи, можно ознакомиться с требованиями:
Сообщение от MSDN
Добавлено через 23 минуты Не по теме: Размещение изображений и файлов на сторонних ресурсах не рекомендуется - для этого существует прикрипление файлов к сообщению. Если используются "защитные" директивы (ifndef&define), то любую рабочую схему можно назвать правильной. Но в итоге, компилятор все приводит в вид одной страницы, поэтому если заголовочный файл был подключен - нет необходимости повторять подключение. resource.h
1
|
35 / 35 / 6
Регистрация: 29.08.2009
Сообщений: 183
|
|
29.11.2012, 19:50 [ТС] | 7 |
Просто он мне в не подключенном файле при компиляции указывал на ошибки, я надеялся, что после подключения к файлу с функцией main, не чего нового он творить не будет. Что ж, спасибо, теперь буду знать. Это очень важно!
А вот этого я действительно не знал, и даже предположить не мог (0__о)! Странно, что не где в учебниках, что я читал, про это не говорилось, а все примеры были с подключениями. Поправьте, если я не правильно понял, - выходит, что мне вообще не нужен файл resource.h (для хранения общих данных, используемых разными классами), я просто могу описать их после описания какого-нибудь класса. И компилятор не будет ругаться, вне зависимости от настроек проекта, и вне зависимости от того как компилируется, release или debug?
0
|
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
|
||||||||||||||||||||||||||||||||||||||||||||||
30.11.2012, 03:23 | 8 | |||||||||||||||||||||||||||||||||||||||||||||
На самом деле, при изучении языка программирования - необходимо изучить не малое количество важных аспектов, но осознать весь теоритический материал без практического подкрепления может далеко не каждый (особенно это касается не интерпритационных языков). Поэтому, в большинстве изданий, представляется общий теоритический материал для формирования начальных навыков программирования.
При создании форм в IDE - заголовочный файл тоже создается с подключениями файлов и многие из них будут повторяться. Обратите внимание на связку директив ifndef и define в начале заголовочных файлов:
Кликните здесь для просмотра всего текста
unit1.h
Обработка "resource.h" будет происходить только в первом случае. При этом подходе не будет ошибок, если подключение не будет объявлено в "main.cpp". Не могу ответить на этот вопрос. Зависит от конкретных условий реализации. Допустим в "resource.h" находятся данные, на которые опираются методы в unit1.h и unit2.h. Можно вынести их в "main.cpp" или в "unit1.h". В-первом случае, придется копировать данные в каждый проект, что не рационально (с таким же успехом можно использовать только один файл). Во-втором случае - подобная реализация может иметь место, пока есть необходимость в "unit1.h" (к примеру в новом проекте не нужен класс из первого файла). Тогда опять придется использовать комбинацию CTRL+C/CTRL+V. Когда дело дойдет до крупных проектов подобная архитектура может вызвать не мало проблем. Я понимаю, что после выше описанного может появится вопрос "так как же делать?" или "как правильно?". Для ясности, представлю еще один пример. Допустим у Вас есть целая библиотека, где только общих заголовочных файлов десятки. Их все необходимо занести в отдельный файл, к примеру в "mylib.h", без которого файлы с классами (unit[0..99]) работать не будут. А те, что встречаются реже - отдельно подключать в необходимых unit-ах. Таким образом, если "unit[n].h" не будет использоваться, то и нет необходимости подключать какой-нибудь "texture.h", который используется в 3 файлах из 100. В отличии от сапера, программист может эксперементировать . Конкретно от режима debug/release данный момент не зависит (базовое различие в том, что в режиме debug в приложении сохраняется отладочная информация). Однако настройки IDE для данных режимов могут отличаться, допустим в debug, директория "c:\myinclude\" была представлена, как один из путей для заголовочных файлов, а в release - нет. Хочу заметить, что мое изложение представлено в краткой форме и наиболее "простым" образом (что может отличаться от исходной трактовки понятий), для ознакомления. К тому же, при более подробном описании - я могу упустить какие-то моменты, а на какие-то темы просто не хватит времени. Для подтверждения своих слов представляю еще одну конструкцию: Кликните здесь для просмотра всего текста
resource.h
main.cpp
1
|
30.11.2012, 03:23 | |