Использование XAudio2 в C

Я работаю над программой C, используя Visual Studio 2015 в Windows 10. Когда я включаю XAudio2.h, я получаю несколько сотен ошибок компилятора, я считаю, что все ошибки связаны с этой:

Ошибка C2485 'uuid': нераспознанный расширенный атрибут

Есть ли способ заставить XAudio2 работать с приложением C?


person Mike    schedule 12.09.2017    source источник


Ответы (1)


Короче говоря, последние версии XAudio2 (XAudio 2.8 в Windows 8.x SDK, XAudio 2.9 в Windows 10 SDK) не поддерживают C, только C ++.

Более старая версия XAudio 2.7 из устаревших сборок DirectX SDK с C, хотя он практически не тестировался на C. На самом деле использование DirectX из C, а не C ++, действительно не тестировалось и не поддерживалось в течение очень, очень долгого времени. Компилятор MIDL, используемый для генерации заголовков COM-интерфейса, по-прежнему имеет множество макросов и элементов поддержки, связанных с C, еще с тех времен, когда использование C было первоклассным, но этот материал определенно находится в состоянии «как есть», которое практически не получает тестовое покрытие.

Вы можете продолжать расстраивать себя, вы можете обернуть весь код C ++ в свою собственную вызываемую оболочку C или просто начать использовать C ++.

См. этот пост и этот пост для получения важной информации об использовании VS 2015 с устаревшим DirectX SDK.

person Chuck Walbourn    schedule 12.09.2017
comment
Спасибо, это было очень информативно. Я понятия не имел, что у C ограниченная поддержка. - person Mike; 12.09.2017
comment
В частности, для игр было время, когда C был очень важен - в основном Id Games и Джон Кармак настаивали на этом в 90-х. С тех пор язык C ++ и, что более важно, качество компиляторов значительно улучшились, поэтому поддержка приложений на чистом C не имеет особого значения - драйверы иногда по-прежнему пишутся с использованием C, но многие используют C ++. Вы всегда можете просто использовать C ++ как лучший C, если вам удобнее работать с C на этом этапе, а затем органично использовать возможности языка C ++ по мере того, как вы приобретаете навыки. - person Chuck Walbourn; 12.09.2017