1. 问题背景
最近学习c++,在练习多线程部分的时候,在本地导入了pthread库的配置,代码写完之后上传到了git仓库,隔天在另外一台电脑上下载下来项目并打开的时候,报错了,提示xxxpthread.lib找不到之类的,而这个xxx是之前电脑上的某个绝对路径。
2. 解决过程
-
首先要排查问题原因,推测是配置文件的问题,挨个打开配置文件检查,果然发现在 xxx.vcxproj 文件中有报错的地址。
-
问题找到了,那么就尝试解决:
- 首先,尝试删除涉案字符串,保存后双击打开xxx.sln文件,发现项目报了一些莫名奇妙的错,看着不好解决的样子,于是回滚了项目。
- 继续尝试删除.vcxproj相关的配置文件,双击打开xxx.sln文件,结果提示找不到项目,又回滚了项目。
- bing上查找相关vs2022项目的控制文件种类,无果,放弃。
- 最后根据以往的经验,想到特定IDE下的控制文件与此IDE生成的文件及文件夹其实都是可以删除的,那么可不可以只保留源文件,删除其他相关控制文件及生成的文件,然后重建项目呢?事实证明是可以的!
-
重建项目:
- 首先是删除不重要的文件,包括 .vs 、packages、x64文件夹(.git是git仓库,不能删除)以及xxx.sln、xxx.vcxproj(.xxx都删除),最后差不多只剩下了cpp文件。
- 重新打开 VS2022,选择 文件 -> 新建 -> 从现有代码文件创建新项目, 然后点击下一步,在“选择项目文件位置”中,选择我们刚刚的项目目录,“项目名称”自己填写,然后一路“下一步”,直到最后“完成”。
- 这时候,如果打开我们的cpp文件,涉及到线程的部分会画红线提示找不到;不要慌,我们在“解决方案资源管理器”视图中,在项目上右单击,选择“管理NuGet程序包” -> 浏览 -> 输入 “pthread", 然后安装 pthread,之后会发现不报错了,但此时还不能够运行,需要将pthreads-w32-2-9-1-release.zip包中的pthreads-w32-2-9-1-release.zip\Pre-built.2\lib\x64\pthreadVC2.lib 复制一下,粘贴到我们线程类的同级目录中,注意:要在VS中粘,不要去项目所在文件夹下粘。
- 至此,此问题解决完毕。