在Visual Studio上配置C++新项目的踩坑总结

举报
无敌清风蓝 发表于 2023/06/01 23:13:16 2023/06/01
【摘要】 C++项目往往很多配置繁琐而又细节,这是我踩坑两天的血泪总结

 引言

这两天需要从远端下载一个新的项目,而新项目所依赖的第三方库我电脑本地已经有了,所以就开始一个个修改每个项目的包含目录和库目录,修改了一天都没改完,于是发现问题不对劲

基本知识

众所周知,C++本身的功能十分简陋,经常需要用到其他的各种第三方库,包含目录和库目录可以很方便的管理第三方库

包含目录是头文件存储的地方,一般是在include中

库目录则是链接库在的地方,一般在lib中

那什么要有包含目录和库目录呢?

你可以把一个第三方库看作是一个功能,像我们写C++时,一般是写个函数实现功能,而函数我们都知道需要有声明和定义,例如一个加法功能的函数

int add(int a, int b)
{
    return a + b;
}

我们只知道这个功能是这样,但是我们怎么用他呢,所以需要函数的声明,告诉我们应该调用哪个函数,里面的参数传什么类型,才能正确使用它

int add(int a, int b);

既然第三方库也是个功能,所以就需要用头文件来告诉我们怎么用这个功能,也就需要包含目录(知道有哪些功能,怎么正确调用它),所以包含目录里面其实就是一堆头文件,指明了我们都有哪些函数功能

但只知道有哪些功能也不行,因为没有实现这个函数,相当于空中楼阁

而第三方库的函数功能实现,就是在lib里面,它是写好的函数具体实现功能,封装起来,供人们调用,其中库文件分动态链接库和静态链接库

当在VS中把包含目录和库目录配置好后,我们才可以正常使用第三方库的功能

通俗一点说,包含目录就是我们的想法, 我们想得高分,想考研成功,想升职加薪,但只有想法,没有行动(库目录),就是一场空

我的做法

比如我的本地有jsoncpp这个库,在D:\3rd的路径下,并且编译项目时发现json这边报错,缺少的头文件刚好也是我jsoncpp里面的,于是我便把我jsoncpp的include和lib配置进包含目录和库目录中,其实当项目少的话还好,一个解决方案里面有很多项目,并且也不止一个库的时候,VS编译每次也都不一定把错误全报出来完,这样是很费劲的,很傻傻的对上百个错误一个个比对,全部改完还是报错,说的就是我

正确做法

1.明确配置管理器

  • 是选Debug还是Release,有些还会有自己弄得配置环境,比如我们的Release_D就是把C++里面的优化功能禁用

  • 是选x64还是win32

这两个你没选对项目的正确配置,是编不过的

2.明确项目第三方库的版本

有时编译不过,用everything搜头文件,发现自己电脑里有,所以就直接配上了,这其实是有隐患的

比如第三方库也是会升级的,也许你下载的这个项目所依赖的第三方库版本比你电脑有的要高,刚好高版本新增了或者删除了一些头文件,亦或是其他的删改,你用你电脑自己的配置,将来还是会编译不过的

如果你是从github上下载的项目,注意看说明各个依赖第三方库的版本

如果你是从公司仓库里下载的,则让同事给你发他们在此项目上运行正常的第三方库

3.将项目自带的环境变量加入到本机中

比如项目中头文件json.h包含目录是$(TX3rdParty)\Jsoncpp\include,而你的json.h头文件在E:/3rd/Jsoncpp/include,刚好你也配过环境变量也就是Own3rd代替了E:/3rd,所以你在项目中把$(TX3rdParty)\Jsoncpp\include给删掉,转而用自己的$(Own3rd)\Jsoncpp\include,这样的话,那所有的项目你都要一个个替换成你自己的,非常繁琐

最好的方法是,再去配一个环境变量,把TX3rdParty配成E:/3rd就好了,不用你修改项目的任何包含目录和库目录

另外如果在你第一次打开sln时候,会让你升级一堆v140类似这样v开头的,尽量不升级,怕出一些问题

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。