Visual Studio 2022编译报错LNK1104:无法打开指定Boost文件系统库
解决LNK1104无法找到Boost Filesystem库的问题
一、先确认目标库是否真的存在
去你编译Boost后的输出目录(默认是Boost根目录下的stage/lib文件夹),查找是否存在libboost_filesystem-vc143-mt-gd-x64-1_83.lib文件:
- 如果不存在,说明编译Boost时没生成该库,需要重新编译;
- 如果存在,说明是项目配置问题,直接看第二部分。
二、重新编译Boost生成对应库
打开VS2022的x64 Native Tools Command Prompt,切换到Boost根目录,执行以下命令:
bootstrap.bat b2 toolset=msvc-14.3 address-model=64 variant=debug,release link=shared,static threading=multi --with-filesystem
toolset=msvc-14.3对应VS2022的编译器;address-model=64指定生成x64架构库;variant=debug,release同时生成Debug和Release版本;--with-filesystem只编译filesystem模块(加快编译速度),如果需要其他模块可以去掉这个参数。
三、检查Visual Studio项目配置
确保项目配置和Boost库的版本完全匹配:
- 切换项目到Debug x64模式(因为错误中的库是Debug、x64版本);
- 右键项目 -> 属性 -> VC++目录 -> 库目录:添加Boost的
stage/lib路径; - 右键项目 -> 属性 -> C/C++ -> 常规 -> 附加包含目录:添加Boost根目录(比如
C:\boost_1_83_0); - 右键项目 -> 属性 -> 链接器 -> 输入 -> 附加依赖项:可以手动添加
libboost_filesystem-vc143-mt-gd-x64-1_83.lib(不过如果库目录配置正确,Boost的自动链接机制会自动找,这一步可选)。
四、代码里的两个小问题
你的代码还有两处逻辑/语法错误,顺便修正:
- 路径字符串的反斜杠需要转义:
path myPath = ("C:\\Visual Studio IP\\Test Project");
- createFolder函数逻辑颠倒了,应该是路径不存在时创建,存在时提示:
void createFolder(path myPath) { if (!exists(myPath)) { create_directory(myPath); std::cout << "directory created in: " << myPath; } else { std::cout << "Path already exists!"; } }
内容的提问来源于stack exchange,提问作者Iancu Stefan-Teodor
相关产品推荐
相关产品推荐

