Используя g ++ 4.6.1 я получаю много ошибок компиляции C ++ при попытке включить xaudio2.h - PullRequest
0 голосов
/ 07 марта 2012

У меня есть приложение c ++ для Windows, которое прекрасно компилируется с помощью Visual Studio 2010. Я также хотел иметь возможность компилировать его с помощью MinGW (на ПК с Windows7-64).Когда g ++ обрабатывает заголовочный файл xaudio2.h, я получаю ошибки, перечисленные ниже.Кто-нибудь знает об исправлении, кроме ручного взлома включаемого файла.

SDKS/DX/Include/xaudio2.h:51:1: error: pasting "5a508685" and "-" does not give
a valid preprocessing token
SDKS/DX/Include/xaudio2.h:51:1: error: pasting "-" and "a254" does not give a va
lid preprocessing token
SDKS/DX/Include/xaudio2.h:51:1: error: pasting "a254" and "-" does not give a va
lid preprocessing token
SDKS/DX/Include/xaudio2.h:51:1: error: pasting "-" and "4fba" does not give a va
lid preprocessing token
SDKS/DX/Include/xaudio2.h:51:1: error: pasting "4fba" and "-" does not give a va
lid preprocessing token
SDKS/DX/Include/xaudio2.h:51:1: error: pasting "-" and "9b" does not give a vali
d preprocessing token
SDKS/DX/Include/xaudio2.h:51:1: error: pasting "9b82" and "-" does not give a va
lid preprocessing token
SDKS/DX/Include/xaudio2.h:51:1: error: pasting "-" and "9a" does not give a vali
d preprocessing token
SDKS/DX/Include/xaudio2.h:52:1: error: pasting "db05ea35" and "-" does not give
a valid preprocessing token
SDKS/DX/Include/xaudio2.h:52:1: error: pasting "-" and "0329" does not give a va
lid preprocessing token
SDKS/DX/Include/xaudio2.h:52:1: error: pasting "0329" and "-" does not give a va
lid preprocessing token
SDKS/DX/Include/xaudio2.h:52:1: error: pasting "-" and "4d4b" does not give a va
lid preprocessing token
SDKS/DX/Include/xaudio2.h:52:1: error: pasting "4d4b" and "-" does not give a va
lid preprocessing token
SDKS/DX/Include/xaudio2.h:52:1: error: pasting "-" and "a5" does not give a vali
d preprocessing token
SDKS/DX/Include/xaudio2.h:52:1: error: pasting "a53a" and "-" does not give a va
lid preprocessing token
SDKS/DX/Include/xaudio2.h:52:1: error: pasting "-" and "6d" does not give a vali
d preprocessing token
SDKS/DX/Include/xaudio2.h:53:1: error: pasting "8bcf1f58" and "-" does not give
a valid preprocessing token
SDKS/DX/Include/xaudio2.h:53:1: error: pasting "-" and "9fe7" does not give a va
lid preprocessing token
SDKS/DX/Include/xaudio2.h:53:1: error: pasting "9fe7" and "-" does not give a va
lid preprocessing token
SDKS/DX/Include/xaudio2.h:53:1: error: pasting "-" and "4583" does not give a va
lid preprocessing token
SDKS/DX/Include/xaudio2.h:53:1: error: pasting "4583" and "-" does not give a va
lid preprocessing token
SDKS/DX/Include/xaudio2.h:53:1: error: pasting "-" and "8a" does not give a vali
d preprocessing token
SDKS/DX/Include/xaudio2.h:53:1: error: pasting "8ac6" and "-" does not give a va
lid preprocessing token
SDKS/DX/Include/xaudio2.h:53:1: error: pasting "-" and "e2" does not give a vali
d preprocessing token
In file included from common/system.h:71:0,
                 from game.cpp:1:
SDKS/DX/Include/xaudio2.h:65:69: fatal error: sal.h: No such file or directory
compilation terminated.

Вот строки в xaudio2.h:

DEFINE_CLSID(XAudio2, 5a508685, a254, 4fba, 9b, 82, 9a, 24, b0, 03, 06, af);
DEFINE_CLSID(XAudio2_Debug, db05ea35, 0329, 4d4b, a5, 3a, 6d, ea, d0, 3d, 38, 52);
DEFINE_IID(IXAudio2, 8bcf1f58, 9fe7, 4583, 8a, c6, e2, ad, c4, 65, c8, bb);

, и похоже, что определения находятся вcomdecl.h as:

#define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
            class DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) className; \
            EXTERN_C const GUID CLSID_##className

#define DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
            interface DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) interfaceName; \
            EXTERN_C const GUID IID_##interfaceName

Ответы [ 2 ]

1 голос
/ 08 апреля 2012

Нашел трюк, который работает.включить XAudio2 как из C, а не C ++.

#undef __cplusplus
#include <xaudio2.h>
#define __cplusplus
0 голосов
/ 17 мая 2012

Это может помочь объяснить это Объединение GCC .

...