构建音频分析库Essentia失败了Gaia支持

时间:2017-08-23 16:45:48

标签: c++ namespaces

我正在尝试构建services.AddSingleton<IOptions<MvcJsonOptions>>(provider => Options.Create(new MvcJsonOptions { SerializerSettings.TraceWriter = provider.GetService<ITraceWriter>() })); https://github.com/MTG/essentia),一个音频分析库,Essentiahttps://github.com/MTG/gaia)支持来自Gaia。在此之前,它的一个依赖项,即Debian 9.0,也是从源代码成功构建的。它安装在Gaia

当谈到/usr/local/时,源代码编译失败并出现以下错误:

Essentia

错误所在的文件是[...] In file included from ../src/algorithms/essentia_algorithms_reg.cpp:21:0: ../src/algorithms/highlevel/gaiatransform.h: At global scope: ../src/algorithms/highlevel/gaiatransform.h:37:10: error: ‘TransfoChain’ in namespace ‘gaia2’ does not name a type gaia2::TransfoChain _history; ^~~~~~~~~~~~ ../src/algorithms/highlevel/gaiatransform.h: In constructor ‘essentia::standard::GaiaTransform::GaiaTransform()’: ../src/algorithms/highlevel/gaiatransform.h:47:5: error: ‘init’ is not a member of ‘gaia2’ gaia2::init(); ^~~~~ ../src/algorithms/highlevel/gaiatransform.h:47:5: note: suggested alternative: In file included from ../src/essentia/algorithmfactory.h:27:0, from ../src/algorithms/essentia_algorithms_reg.cpp:1: ../src/essentia/essentia.h:46:6: note: ‘essentia::init’ void init(); ^~~~ ,这是编译文件的命令:

/src/algorithms/essentia_algorithms_reg.cpp

/usr/bin/g++ -pipe -Wall -std=c++03 -msse -msse2 -mfpmath=sse -O2 -fPIC -pthread -Isrc -I../src -Isrc/essentia -I../src/essentia -Isrc/essentia/scheduler -I../src/essentia/scheduler -Isrc/essentia/streaming -I../src/essentia/streaming -Isrc/essentia/streaming/algorithms -I../src/essentia/streaming/algorithms -Isrc/essentia/utils -I../src/essentia/utils -Isrc/3rdparty -I../src/3rdparty -Isrc/3rdparty/spline -I../src/3rdparty/spline -Isrc/3rdparty/vamp-plugin-sdk-2.4 -I../src/3rdparty/vamp-plugin-sdk-2.4 -I/usr/include/x86_64-linux-gnu -I/usr/include/taglib -I/usr/local/include -I/usr/include/qt4 -I/usr/include/qt4/QtCore -I/usr/local/include/gaia2/ -DHAVE_AVCODEC=1 -DHAVE_AVFORMAT=1 -DHAVE_AVUTIL=1 -DHAVE_AVRESAMPLE=1 -DHAVE_SAMPLERATE=1 -DHAVE_TAGLIB=1 -DHAVE_YAML=1 -DHAVE_FFTW=1 -DHAVE_GAIA2=1 -D__STDC_CONSTANT_MACROS -DPYTHONDIR="/usr/local/lib/python2.7/dist-packages" -DPYTHONARCHDIR="/usr/local/lib/python2.7/dist-packages" -DHAVE_PYEMBED=1 -DHAVE_PYEXT=1 -DHAVE_PYTHON_H=1 ../src/algorithms/essentia_algorithms_reg.cpp -c -o/home/hamidi/essentia/build/src/algorithms/essentia_algorithms_reg.cpp.1.o -fPIC -v &#39; g++选项为我提供了链接器访问的实际路径(我认为没有什么不好,但为了完整性):

-v

以下是错误中涉及的文件(github repo):

  • MTG /盖亚/斑点/主/ SRC / gaia.h

  • MTG /盖亚/斑点/主/ SRC / transformation.h#L106

  • /MTG/essentia/blob/master/src/algorithms/highlevel/gaiatransform.h

1 个答案:

答案 0 :(得分:0)

最终在配置v时导致问题的错误发生了。实际上,不是仅仅使用以下选项进行配置:

Gaia

无意中添加了选项./waf configure --with-python-bindings --with-asserts --with-cyclops 。将--with-stlfacadeGaia结合使用时,此选项不兼容。