c - i686-w64-mingw32/include/shlobj.h 中的一些奇怪的代码

标签 c archlinux openal

我正在为 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 专业人士,但似乎 } 位于枚举 block 内,因此我尝试了所有可能的方法来修复它,但没有成功。

最佳答案

看看这个 - http://sourceforge.net/p/mingw-w64/bugs/476

  • 选项 #1 检查该链接提供的补丁 - 您必须重建
  • 选项 #2 尝试提取包含补丁的版本

关于c - i686-w64-mingw32/include/shlobj.h 中的一些奇怪的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31843864/

相关文章:

c - 函数内部 static const uint8_t 更改值

c - 遍历字符串与打印特定位置时的不同结果 (C)

c - 在 C 中,冒号在声明中意味着什么?

json - 使用 jsoup 抓取站点并在 golang 中生成 json

c++ - gcc 库函数的手册页

linux - Gcloud 初始化为错误的项目

c++ - 涉及 boost_lock 的链接器错误

ios - 使用 OpenAL 对音频电平进行采样

macos - 适用于 Mac OS X 的 openAL 教程

c++ - alutCreateBufferHelloWorld() 中的openal