1

我正在使用 CMake 生成的 Visual Studio 项目中工作,由于某种原因,我在构建时收到 LNK1104 错误,提示“无法打开文件 'hboost_python27-vc142-mt-x64-1_72.lib'”,我知道事实上,该文件在任何地方都不存在,并且正确的依赖项是“hboost_python27-mt-x64.lib”。那么为什么 Visual Studio 要求这个文件呢?我将如何推导出这个文件名的来源,然后修复它?这更像是一个 CMake 问题吗?还是 Visual Studio 问题?

作为参考,我正在为 Houdini 编译自定义美元资产解析器,这是我正在处理的代码https://github.com/mwalk176/USD-Custom-Resolver-Windows-Example/tree/main/custom_resolver/项目

4

1 回答 1

0

我认为您的 PC 上安装了相当旧版本的 Boost,从最新版本的 Boost 开始,这是编写更详细语法(如 )的标准方法hboost_python27-vc142-mt-x64-1_72.lib,因此它是正确的。

尝试从此处下载 Boost 1.72,或者如果您的代码与更新的 Boost 版本兼容,那么最好立即下载1.78的最新版本。

否则在您的文件系统中将文件复制hboost_python27-mt-x64.libhboost_python27-vc142-mt-x64-1_72.lib,或制作 Windows 硬链接。这样编译的时候就可以找到了。

另一种选择是您修改当前代码

#pragma comment(lib, HBOOST_LIB_PREFIX HBOOST_STRINGIZE(HBOOST_LIB_NAME) "-" \
    HBOOST_LIB_TOOLSET HBOOST_LIB_THREAD_OPT HBOOST_LIB_RT_OPT \
    HBOOST_LIB_ARCH_AND_MODEL_OPT "-" HBOOST_LIB_VERSION ".lib")

到更短的版本:

#pragma comment(lib, HBOOST_LIB_PREFIX HBOOST_STRINGIZE(HBOOST_LIB_NAME) "-" \
    HBOOST_LIB_THREAD_OPT HBOOST_LIB_RT_OPT HBOOST_LIB_ARCH_AND_MODEL_OPT ".lib")

在此更改后,此编译指示代码将生成预期的文件名hboost_python27-mt-x64.lib

于 2021-12-19T04:50:14.237 回答