按照opensmile官方手册上的步骤,在windows上编译支持portaudio的opensmile,在编译opensmilelib时出现了以下问题:
5>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5): warning MSB8012: TargetPath(E:\opensmile\opensmile-2.3.0\ide\vs10\Release\openSmileLib_Release.dll) 与 Linker 的 OutputFile 属性值(E:\opensmile\msvcbuild\openSmileLib_Release.dll)不匹配。这可能导致项目生成不正确。若要更正此问题,请确保 $(OutDir)、$(TargetName) 和 $(TargetExt) 属性值与 %(Link.OutputFile) 中指定的值匹配。
5>LINK : warning LNK4075: 忽略“/INCREMENTAL”(由于“/OPT:ICF”规范)
5> 正在创建库 ......\msvcbuild\openSmileLib_Release.lib 和对象 ......\msvcbuild\openSmileLib_Release.exp
5>componentManager.obj : error LNK2001: 无法解析的外部符号 "public: static class sComponentInfo * cdecl cSimpleMessageSender::registerComponent(class cConfigManager *,class cComponentManager *)" (?registerComponent@cSimpleMessageSender@@SAPAVsComponentInfo@@PAVcConfigManager@@PAVcComponentManager@@@Z)
5>componentManager.obj : error LNK2001: 无法解析的外部符号 "protected: virtual void __thiscall cSimpleMessageSender::fetchConfig(void)" (?fetchConfig@cSimpleMessageSender@@MAEXXZ)
5>componentManager.obj : error LNK2001: 无法解析的外部符号 "protected: virtual int __thiscall cSimpleMessageSender::myFinaliseInstance(void)" (?myFinaliseInstance@cSimpleMessageSender@@MAEHXZ)
5>componentManager.obj : error LNK2001: 无法解析的外部符号 "protected: virtual int __thiscall cSimpleMessageSender::myTick(int64)" (?myTick@cSimpleMessageSender@@MAEH_J@Z)
5>componentManager.obj : error LNK2001: 无法解析的外部符号 "protected: virtual int __thiscall cSimpleMessageSender::processComponentMessage(class cComponentMessage *)" (?processComponentMessage@cSimpleMessageSender@@MAEHPAVcComponentMessage@@@Z)
5>componentManager.obj : error LNK2019: 无法解析的外部符号 "public: virtual __thiscall cSimpleMessageSender::~cSimpleMessageSender(void)" (??1cSimpleMessageSender@@UAE@XZ),该符号在函数 "public: virtual void * __thiscall cSimpleMessageSender::`scalar deleting destructor'(unsigned int)" (??_GcSimpleMessageSender@@UAEPAXI@Z) 中被引用
5>......\msvcbuild\openSmileLib_Release.dll : fatal error LNK1120: 6 个无法解析的外部命令
该如何解决呢,其余库编译都正确,库的编译顺序是按照手册编译的,恳请懂opensmile的高手回答。
可能有两个原因,一个是你编译器的设置有问题,比如你试图生成x64的代码,而你的库是32bit的,另一个原因是你的代码之前在别的计算机上编译过,你需要先把obj全部删除,重新编译,否则链接不起来。
若是第一种原因,应该怎么解决呢?