|
7 / 7 / 1
Регистрация: 10.10.2012
Сообщений: 47
|
||||||||||||||||
Маршалинг Waveform Audio20.05.2013, 15:19. Показов 1771. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|