i686-w64-mingw32/include/shlobj.h 中的一些奇怪的代码
Some weird code in i686-w64-mingw32/include/shlobj.h
我正在为 mingw-gcc 构建 openal
$ yaourt -S mingw-w64-openal
出现语法错误:
[ 38%] Building C object CMakeFiles/OpenAL32.dir/Alc/alcConfig.c.obj
In file included from /tmp/yaourt-tmp-hacked/aur-mingw-w64-openal/src/openal-soft-1.16.0/Alc/alcConfig.c:36:0:
/usr/i686-w64-mingw32/include/shlobj.h:37:3: error: unknown type name ‘EXTERN_C’
SHFOLDERAPI SHGetFolderPathW (HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags,
^
/usr/i686-w64-mingw32/include/shlobj.h:37:3: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘HRESULT’
SHFOLDERAPI SHGetFolderPathW (HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags,
^
/usr/i686-w64-mingw32/include/shlobj.h:37:3: error: unknown type name ‘HRESULT’
CMakeFiles/OpenAL32.dir/build.make:463: recipe for target 'CMakeFiles/OpenAL32.dir/Alc/alcConfig.c.obj' failed
make[2]: *** [CMakeFiles/OpenAL32.dir/Alc/alcConfig.c.obj] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/OpenAL32.dir/all' failed
make[1]: *** [CMakeFiles/OpenAL32.dir/all] Error 2
Makefile:116: recipe for target 'all' failed
make: *** [all] Error 2
我查看了第 37 行的 shlobj.h
并发现:
typedef enum {
SHGFP_TYPE_CURRENT = 0,
SHGFP_TYPE_DEFAULT = 1,
} SHGFP_TYPE;
SHFOLDERAPI SHGetFolderPathW (HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath);
我不是 C 专家,但似乎 }
在枚举块中,所以我尝试了所有可能的方法来修复它,但没有成功。
看看这个 - http://sourceforge.net/p/mingw-w64/bugs/476
- 选项 #1 检查那个 link 提供的补丁 - 你必须重建
- 选项 #2 尝试拉取包含补丁的版本
我正在为 mingw-gcc 构建 openal
$ yaourt -S mingw-w64-openal
出现语法错误:
[ 38%] Building C object CMakeFiles/OpenAL32.dir/Alc/alcConfig.c.obj
In file included from /tmp/yaourt-tmp-hacked/aur-mingw-w64-openal/src/openal-soft-1.16.0/Alc/alcConfig.c:36:0:
/usr/i686-w64-mingw32/include/shlobj.h:37:3: error: unknown type name ‘EXTERN_C’
SHFOLDERAPI SHGetFolderPathW (HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags,
^
/usr/i686-w64-mingw32/include/shlobj.h:37:3: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘HRESULT’
SHFOLDERAPI SHGetFolderPathW (HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags,
^
/usr/i686-w64-mingw32/include/shlobj.h:37:3: error: unknown type name ‘HRESULT’
CMakeFiles/OpenAL32.dir/build.make:463: recipe for target 'CMakeFiles/OpenAL32.dir/Alc/alcConfig.c.obj' failed
make[2]: *** [CMakeFiles/OpenAL32.dir/Alc/alcConfig.c.obj] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/OpenAL32.dir/all' failed
make[1]: *** [CMakeFiles/OpenAL32.dir/all] Error 2
Makefile:116: recipe for target 'all' failed
make: *** [all] Error 2
我查看了第 37 行的 shlobj.h
并发现:
typedef enum {
SHGFP_TYPE_CURRENT = 0,
SHGFP_TYPE_DEFAULT = 1,
} SHGFP_TYPE;
SHFOLDERAPI SHGetFolderPathW (HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath);
我不是 C 专家,但似乎 }
在枚举块中,所以我尝试了所有可能的方法来修复它,但没有成功。
看看这个 - http://sourceforge.net/p/mingw-w64/bugs/476
- 选项 #1 检查那个 link 提供的补丁 - 你必须重建
- 选项 #2 尝试拉取包含补丁的版本