VS2017编译opensmile具体过程和遇到的问题

  1. 下载最新的稳定版本openSMILEhttp://audeering.com/technology/opensmile/#download
  2. 在Windows上编译openSMILE,首选的方式(也是官方唯一支持的方式)是用Visual Studio 2010进行编译。这里我们用VS2017进行编译。

  3. 在文件ide/vs10/openSmile.sln提供的是一个Microsoft Visual Studio下的编译方案。您可以从这个解决方案中选择几个配置,它们代表独立版本(简单的Release和Debug配置)的各种组合,以及支持OpenCV和PortAudio(相应地命名)。具体步骤如下: 

1.在你的系统上的某处创建一个opensmile文件夹。 

2.将openSMILE release发行包复制到该文件夹中,并解压缩。 

3.此时应该在opensmile文件夹会生成一个文件夹opensmile-2.3.0。 

4.在opensmile文件夹中创建一个名为msvcbuild的文件夹。 

5.用Visual Studio打开opensmile/opensmile-2.x/ide/vs10/openSmile.sln。 

6.选择“Release”配置。 

7.从编译菜单中选择“Build Solution”。 

8.如果您遇到关于缺少库的错误,请重复几次编译过程(请参阅下面的说明)。 

9. openSMILE二进制文件现在已经在msvcbuild文件夹中创建。主二进制文件是SMILExtract Release.exe,它依赖openSmileLib Release.dll。因此,如果您需要移动文件,必须两个同时移动。

以上是官方的编译步骤。

在编译过程中遇到如下问题:componentManager.obj : error LNK2001

4>  正在创建库 ..\..\..\msvcbuild\openSmileLib_Release.lib 和对象 ..\..\..\msvcbuild\openSmileLib_Release.exp
4>componentManager.obj : error LNK2001: 无法解析的外部符号 "public: static class sComponentInfo * __cdecl cSimpleMessageSender::registerComponent(class cConfigManager *,class cComponentManager *)" (?registerComponent@cSimpleMessageSender@@SAPAVsComponentInfo@@PAVcConfigManager@@PAVcComponentManager@@@Z)
4>componentManager.obj : error LNK2001: 无法解析的外部符号 "protected: virtual void __thiscall cSimpleMessageSender::fetchConfig(void)" (?fetchConfig@cSimpleMessageSender@@MAEXXZ)
4>componentManager.obj : error LNK2001: 无法解析的外部符号 "protected: virtual int __thiscall cSimpleMessageSender::myFinaliseInstance(void)" (?myFinaliseInstance@cSimpleMessageSender@@MAEHXZ)
4>componentManager.obj : error LNK2001: 无法解析的外部符号 "protected: virtual int __thiscall cSimpleMessageSender::myTick(__int64)" (?myTick@cSimpleMessageSender@@MAEH_J@Z)
4>componentManager.obj : error LNK2001: 无法解析的外部符号 "protected: virtual int __thiscall cSimpleMessageSender::processComponentMessage(class cComponentMessage *)" (?processComponentMessage@cSimpleMessageSender@@MAEHPAVcComponentMessage@@@Z)
4>componentManager.obj : error LNK2019: 无法解析的外部符号 "public: virtual __thiscall cSimpleMessageSender::~cSimpleMessageSender(void)" (??1cSimpleMessageSender@@UAE@XZ),该符号在函数 "public: virtual void * __thiscall cSimpleMessageSender::`vector deleting destructor'(unsigned int)" (??_EcSimpleMessageSender@@UAEPAXI@Z) 中被引用
4>..\..\..\msvcbuild\openSmileLib_Release.dll : fatal error LNK1120: 6 个无法解析的外部命令
4>已完成生成项目“openSmileLib.vcxproj”的操作 - 失败。

解决办法:

在解决方案资源管理器界面,右键openSmileLib项目》添加》现有项,将src \ examples \ simpleMessageSender.cpp添加到openSmileLib项目,再重新编译即可。

 

猜你喜欢

转载自blog.csdn.net/sun___shy/article/details/81335904