具体来说,我正在尝试通过 spotify 文档中给出的 spshell 示例登录。我很确定我包括所有相关文件(spshell.h,cmd.h),但以下代码给了我错误 LNK2001:未解析的外部符号:
int r;
if((r = spshell_init(username,password,blob,selftest)) != 0)
exit(r);
具体来说,我正在尝试通过 spotify 文档中给出的 spshell 示例登录。我很确定我包括所有相关文件(spshell.h,cmd.h),但以下代码给了我错误 LNK2001:未解析的外部符号:
int r;
if((r = spshell_init(username,password,blob,selftest)) != 0)
exit(r);
“未解析的外部符号”是编译成功后出现的错误之一,但链接失败。
.h 文件是标题。没有它们,您的项目将无法编译。
您一定忘记添加库了。没有它们,项目将编译,但不会链接。
Windows上的库文件通常以“.lib”的扩展名分发,即“libspotify-2.0.lib”,有时它们与DLL配对:“libspotify-2.0.dll”。文件名是人为的。实际情况可能有所不同。
您必须找到与您正在使用的 libspotify 版本一起分发的正确 LIB 文件,然后您必须编辑项目的选项或开关以使其在链接期间使用该库。假设您使用的是 MSVC,它是 Project->Properties->Linker->AdditionalDependencies。在那里添加到 LIB 的路径,然后重建。
然后,将配对的 DLL 放在最终的 EXE 附近,否则它将正确编译和链接,只是在启动时崩溃。(虽然,有一种称为“静态库”的库也是 LIB 文件,不需要任何 DLL。您通常可以通过大小来判断它们:动态 LIB 为几十 KB,而静态库通常为十万 KB)。