用 vcpkg 静态链接 libsndfile 并运行 sf_open 时出错

问题描述 投票:0回答:1

这里有一些示例代码:

#包括

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

所以基本上我是从 vcpkg 静态链接它,并且我遵循了所有步骤,例如最后使用 :x64-windows-static、更改 Visual Studio 设置和配置文件等等,但由于某种原因我收到了这些错误特别是当我静态编译和使用 sf_open 时。

错误:

3 个未解决的外部因素 函数 INT123_compat_catpath 中引用的未解析的外部符号 __imp_PathCombineW 函数 wpath_need_elongation 中引用的未解析的外部符号 __imp_PathIsRelativeW 函数 wlongpath 中引用的未解析的外部符号 __imp_PathIsUNCW

注意:是的,我确实意识到 libsndfile 是在 LGPL 下获得许可的,因此我计划包含目标文件,因为这显然允许我静态链接它。

c++ static-libraries linker-errors libsndfile
1个回答
1
投票

这些是来自 windows api 的函数。只需 Google 一下它们,msdn 帮助页面就会告诉您需要链接哪个 Windows 库。

例如 PathCombineW 有此帮助页面:https://learn.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-pathcombinewRequirements 部分它告诉您您需要链接到

Shlwapi.lib

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.