Visual Studio 2017无法打开raknet.lib/raknet_d.lib链接器错误求助
这种问题我碰到过好几次,虽然你说两个项目的设置和依赖完全一致,但往往是一些容易忽略的细节导致的,给你几个针对性的排查方向:
先确认库文件的实际存在性:把项目设置里的
$(SolutionDir)dependencies/raknet/libs这个宏替换成实际路径(可以在项目属性窗口里点击输入框旁的箭头,选择“编辑”,再点击“宏”按钮查看$(SolutionDir)的真实值),然后去对应的目录下检查:- Release配置下,是否存在
raknet.lib - Debug配置下,是否存在
raknet_d.lib
如果文件不存在,要么是依赖包没下载完整,要么是参考项目里的库路径其实和你当前设置的不一样。
- Release配置下,是否存在
核对配置与平台的一致性:别忽略了项目的配置(Release/Debug)和平台(x86/x64)。比如你当前选的是Debug x64,但RakNet库只编译了Win32版本,或者附加库目录只在Debug x86下设置了,x64没设。一定要确保当前项目的配置+平台,和RakNet库编译的版本完全匹配,而且对应的配置下附加库目录是正确的。
检查附加依赖项的条件设置:在链接器的「输入->附加依赖项」里,要区分Debug和Release版本的库。最好用条件宏来设置:
- 当
$(ConfigurationName)为Debug时,添加raknet_d.lib - 当
$(ConfigurationName)为Release时,添加raknet.lib
很多人容易在这里写死一个库名,导致切换配置后找不到对应文件。
- 当
确认项目设置的继承性:右键项目→属性→配置属性→常规,查看「继承项目默认设置」是否勾选,对比参考项目的这个选项。有时候参考项目继承了解决方案层面的设置,而当前项目没继承,导致路径缺失。
清理缓存并重新生成:VS的缓存有时候会搞鬼。先手动删除当前项目的
obj和bin目录,再删除解决方案根目录下的.vs文件夹,然后重启VS,重新生成整个解决方案。检查路径大小写:虽然Windows是大小写不敏感,但偶尔VS的宏解析或工具链会因为大小写匹配问题找不到文件。比如实际路径是
RakNet/libs,但你设置里写的是raknet/libs,尽量保持路径大小写和实际目录一致。
内容的提问来源于stack exchange,提问作者Jack McCall

