我知道这个问题已经被问了很多遍了,但是在尝试了所有这些解决方案之后,似乎没有一个适合我。
我正在尝试构建要在Visual Studio中使用的Amazon Alexa AVS SDK应用程序。 我可以生成DLL,但是我需要它们位于.LIB中才能进行链接。
能够生成DEF文件(我正在AVSCommon模块上工作),但文件已损坏(摘要):
Dump of file libAVSCommon.dll
File Type: DLL
Section contains the following exports for libAVSCommon.dll
00000000 characteristics
5D1068DF time date stamp Mon Jun 24 14:08:31 2019
0.00 version
1 ordinal base
1276 number of functions
1276 number of names
ordinal hint RVA name
406 195 00048D40 _ZN14alexaClientSDK9avsCommon5utils6logger12ModuleLogger8setLevelENS2_5LevelE
453 1C4 000470D0 _ZN14alexaClientSDK9avsCommon5utils6logger6Logger8setLevelENS2_5LevelE
根据 https://gist.github.com/azadkuh/8957917,我应该修改DEF文件并仅保留函数名称。所以现在我有了这个:
EXPORTS
_ZN14alexaClientSDK9avsCommon5utils6logger12ModuleLogger8setLevelENS2_5LevelE
_ZN14alexaClientSDK9avsCommon5utils6logger6Logger8setLevelENS2_5LevelE
我检查了一下,将其拆散后看起来像这样(但是我没有使用它,我只使用了上面的错误代码):
alexaClientSDK::avsCommon::utils::logger::ModuleLogger::setLevel(alexaClientSDK::avsCommon::utils::logger::Level)
alexaClientSDK::avsCommon::utils::logger::Logger::setLevel(alexaClientSDK::avsCommon::utils::logger::Level)
然后使用以下命令创建一个库:
$> lib.exe /def:libAVSCommon.def /machine:x86 /out:libAVSCommon.lib
但是,当我使用生成的.lib(也使用.exp尝试过)时,它仍然会给我同样的错误:
1>ConsoleLogger.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall
alexaClientSDK::avsCommon::utils::logger::Logger::setLevel(enum alexaClientSDK::avsCommon::utils::logger::Level)"
(?setLevel@Logger@logger@utils@avsCommon@alexaClientSDK@@UAEXW4Level@2345@@Z)
我应该删除名称空间吗? 我究竟做错了什么?? 帮助将不胜感激