|
7 / 7 / 1
Регистрация: 10.10.2012
Сообщений: 47
|
||||||||||||||||
Маршалинг Waveform Audio20.05.2013, 15:19. Показов 1768. Ответов 8
Метки нет (Все метки)
Привет.
Возникла необходимость сделать wrapper для c# библиотеки Windows Waveform Audio. Пока работаю пока только с одной структурой и одной функцией и уже получаю ошибку: В среде выполнения обнаружена критическая ошибка. Ошибка произошла по адресу 0x5e815fb7 в потоке 0x1a84. Код ошибки 0xc0000005... Код c++:
Вот не могу понять в чем дело и все! Вроде делаю все согласно статье "Класс Marshal, использование PInvoke, небезопасный код (unsafe)". Кстати в результате эксперимента: Когда убрал CharSet = и вызывал waveInGetDevCapsW, то работало, но метод выдавал код ошибки в переменную j. Ошибка: некорректные параметры. P.S. С маршалингом сталкиваюсь первый раз, так что очень плохо тут ориентируюсь. Добавлено через 10 минут И еще наблюдение: Почему то размер структуры на 2 байта больше чем надо.
0
|
||||||||||||||||
| 20.05.2013, 15:19 | |
|
Ответы с готовыми решениями:
8
Управление Audio Source, полями AudioClip (Audio Clip) и Output (Audio Mixer Group) через скрипт Multimedia Audio Adapfer Realtek ALC655@SiS 7012 Audio Device Не работает звук - нет драйвера на Audio Device on High Definition Audio Bus |
|
Master of Orion
|
||||||
| 20.05.2013, 15:47 | ||||||
|
mib383, может потому что у вас строка в С++ включает символ \0, судя по вашему же комменту:
Добавлено через 1 минуту Хотя я с этим мало работал и не уверен что в этом проблема) Просто предположение
1
|
||||||
|
7 / 7 / 1
Регистрация: 10.10.2012
Сообщений: 47
|
|
| 20.05.2013, 17:15 [ТС] | |
|
Нет, дело не в этом.
Но все равно спасибо, вы меня на мысль натолкнули, что надо добавить pack=1 с структуре, чтоб убрать выравнивание, теперь размер адекватный. Но проблема все равно, увы, не решилась. Добавлено через 1 час 6 минут Проблему решил так: 1. waveInGetDevCapsW 2. struct pack(1) 3. charset = unicode Но это решение не красивое! Надо как-то по-другому.
0
|
|
|
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
|
|||||||
| 21.05.2013, 06:48 | |||||||
|
Касательно
Далее, класс WaveInCaps и так передается по ссылке, т.е. ref там лишний. Наконец, третий параметр - WINAPI uint == C# uint == UInt32. При чем тут UInt16?
1
|
|||||||
|
7 / 7 / 1
Регистрация: 10.10.2012
Сообщений: 47
|
|||||||||||||||||
| 21.05.2013, 09:21 [ТС] | |||||||||||||||||
|
UInt16 или 32 почти не влияет. А вот насчет ссылки это интересно. Делаю вместо class WaveInCaps - struct WaveInCaps и передаю по ссылке. Ошибку выдает уже не среда, а сама функция: не верно заданы параметры. На c++ этот код выглядит:
Добавлено через 16 минут Ребят! Спасибо большое - разобрался. Ключевой момент действительно оказался UINT(c++) = uint(c#). Главная ошибка была с MMVERSION = UINT. В итоге год выглядит так:
0
|
|||||||||||||||||
|
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
|
|||||||||
| 21.05.2013, 09:46 | |||||||||
0
|
|||||||||
|
7 / 7 / 1
Регистрация: 10.10.2012
Сообщений: 47
|
||
| 21.05.2013, 11:05 [ТС] | ||
|
При создании объекта структуры с помощью оператора new объект создается и вызывается соответствующий конструктор. В отличие от классов структуры можно создавать без использования оператора new. В таком случае вызов конструктора отсутствует, что делает выделение более эффективным. Однако поля остаются без значений и объект нельзя использовать до инициализации всех полей. Так что мой вариант тоже вроде как правильный. Насчет uint: согласен с вами, просто оно работало и так (пока дело не коснулось поля структуры), видимо оно само преобразовывалось в нужный формат. Еще раз спасибо.
0
|
||
|
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
|
||||||||
| 21.05.2013, 13:24 | ||||||||
.
0
|
||||||||
|
7 / 7 / 1
Регистрация: 10.10.2012
Сообщений: 47
|
||
| 21.05.2013, 14:36 [ТС] | ||
|
0
|
||
| 21.05.2013, 14:36 | |
|
Помогаю со студенческими работами здесь
9
Посчитать количество точек на Waveform Graph Waveform Визуализация на базе Bass.dll Драйвер на Realtek AC'97 Audio for VIA (R) Audio Controller Поместить данные из текстового файла в Waveform chart Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|