将 libsndfile 与 vcpkg 和 运行 sf_open 静态链接时出错

Errors when statically linking libsndfile with vcpkg and running sf_open

下面是一些示例代码:

#include<sndfile.h>

int main() { SNDFILE* sndfile; SF_INFO sfinfo; sndfile = sf_open("", SFM_READ, &sfinfo); std::cout << "Hello, World!"; }

所以基本上我是从 vcpkg 静态 linking 它,我遵循了所有步骤,比如最后使用 :x64-windows-static,更改 visual studio设置和配置文件等等,但由于某种原因,我在静态编译和使用 sf_open.

时特别遇到这些错误

错误:

3 unresolved externals unresolved external symbol __imp_PathCombineW referenced in function INT123_compat_catpath unresolved external symbol __imp_PathIsRelativeW referenced in function wpath_need_elongation unresolved external symbol __imp_PathIsUNCW referenced in function wlongpath

注意:是的,我知道 libsndfile 是在 LGPL 下获得许可的,所以我计划包含目标文件,因为这显然允许我静态 link 它。

这些是 windows api 中的函数。只需 Google 它们,msdn 帮助页面将告诉您需要哪个 windows 库 link。

例如 PathCombineW 有这个帮助页面:https://docs.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-pathcombinew in the Requirements 部分它告诉您需要 link 到 Shlwapi.lib