无法使用 make 构建诺基亚 HEIF 库

Can't build Nokia HEIF library with make

我正在尝试在 https://github.com/nokiatech/heif 中构建 HEIF 库,但我没有运气。

我安装了 CMake 和最新版本的 MinGW。我正在按照步骤构建库,但出现错误。

第一步,也就是这个:

cd heif/build
cmake --help
cmake ../srcs -G"<Generator listed by above command for your target platform>"

有效,但第二步是这样的:

cmake --build .

似乎可以正常工作,但当它完成 41% 时,我收到此错误:

C:\Users\dantelo\Documents\heif-master\srcs\reader\heifstreamfile.cpp: In constructor 'HEIF::FileStream::FileStream(const char*)':
C:\Users\dantelo\Documents\heif-master\srcs\reader\heifstreamfile.cpp:44:9: error: 'fopen_s' was not declared in this scope
     fopen_s(&m_file, filename, "rb");
     ^~~~~~~
C:\Users\dantelo\Documents\heif-master\srcs\reader\heifstreamfile.cpp:44:9: note: suggested alternative: 'fopen'
     fopen_s(&m_file, filename, "rb");
     ^~~~~~~
     fopen
reader\CMakeFiles\heif_static.dir\build.make:93: recipe for target 'reader/CMakeFiles/heif_static.dir/heifstreamfile.cpp.obj' failed
mingw32-make.exe[2]: *** [reader/CMakeFiles/heif_static.dir/heifstreamfile.cpp.obj] Error 1
mingw32-make.exe[2]: Leaving directory 'C:/Users/dantelo/Documents/heif-master/build'
CMakeFiles\Makefile2:233: recipe for target 'reader/CMakeFiles/heif_static.dir/all' failed
mingw32-make.exe[1]: *** [reader/CMakeFiles/heif_static.dir/all] Error 2
mingw32-make.exe[1]: Leaving directory 'C:/Users/dantelo/Documents/heif-master/build'
Makefile:85: recipe for target 'all' failed
mingw32-make.exe: *** [all] Error 2

我在 Windows 10 以防相关。我不知道为什么会这样。任何帮助表示赞赏

似乎 fopen_s 只出现在微软提供的 C 库中,即在 MSVC 中。资料来源:Is there a way to use fopen_s() with GCC or at least create a #define about it?

你最好的选择是切换到 MSVC,因为你的代码显然从未用 MinGW 测试过,因为它不能被后者编译。

或者,如果您运气好,可以使用一些 #define 技巧将 fopen_s 转换为标准 fopen(请参阅链接问题中的答案)并希望这是代码中唯一的不兼容性。