我正在使用CMake生成的Visual Studio项目中工作,由于某种原因,我在构建时收到一个LNK1104错误,上面写着";无法打开文件"hbost_python27-vc142-mt-x64-1_72.lib";并且对于事实,我知道该文件不存在于任何地方;hbost_python27-mt-x64.lib;那么为什么Visual Studio要这个文件呢?我该如何推导这个文件名的来源,然后修复它?这更像是一个CMake问题吗?还是Visual Studio问题?
作为参考,我正在为Houdini编译一个自定义的美元资产解析程序,下面是我正在编写的代码https://github.com/mwalk176/USD-Custom-Resolver-Windows-Example/tree/main/custom_resolver/project
我认为您的电脑上安装了相当旧的Boost版本,从最近的Boost开始,它是编写更详细语法(如hboost_python27-vc142-mt-x64-1_72.lib
(的标准方法,因此它是正确的。
请尝试从这里下载Boost 1.72,或者如果您的代码与Boost的最新版本兼容,那么最好立即下载最新版本1.78。
否则,在文件系统中将文件hboost_python27-mt-x64.lib
复制到hboost_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
。