最近准备做一个项目,本来想在windows平台下进行,但是cv(就是漂的)别人的代码是在linux下做的,然后我也尝试了下在windows下做,奈何实力有限总有些东西整不明白,最后还是转到了linux下,可能这就是缘分吧,这里说一下我碰到的问题,以及摸索出来的解决方法。如果有那里不对,或者还有改进的地方,大家可以互相讨论。
首先,我的vscode中的launch.json和tasks.json不知道为什么和有一些教程中讲的不一样,就是打开launch.json和tasks.json之后就是这样,如下图
上面就是我的两个json文件的所有东西,我认为出现这个的原因可能是我使用的是json模板,并没有对源文件进行修改,导致每一次使用新项目都要重新cv这两个模板
首先如果不对默认模板进行修改,进行调试肯定会报错的。
大家可以看到我点击右上角的运行按钮的时候下面的控制台是报错了的,大意是main.cpp中的cls::func()函数未定义,我对这个的理解就是编译器在编译main.cpp文件的时候并没有同时编译hello.cpp 导致找不到hello.cpp中对func函数的定义
这里我把我修改后的launch.json和tasks.json贴上来,想要的小伙伴可以自取,
这里就是两个文件的全部的内容了,可能有些同学会问为什么这么多,我看别人的也不多啊,其实我这两个json文件包含了vscode的三种调试情况,在配置好这两个json文件后,无论你是使用gdb调试还是cmake调试或者界面的运行按钮,在修改了相应的部分后均可以成功运行。
如果想成功运行的话还有最后一步,就是你的头文件的包含路径一定要设置好,
像我就是把.cpp文件和.h文件分开放了的,最好象我一样,这样才可以运行成功,然后main.cpp和hello.cpp在包含头文件是要包含相对路径,这样才可以运行成功。如下图所示
拿这个头文件来举例,(../include/hello.h ),首先因为我们的头文件包含在cpp文件中,所以当前文件就在src文件夹下,..就是说src文件夹的上一级文件夹,也就是test文件夹,所以../include/hello.h就是指test文件夹下的include文件夹下的hello.h文件。于是就通过这种方式把头文件包含进去了,并且不会报错,我之前看的b站上的xiaobing的视频,我看他直接把main.cpp文件放到test文件夹下,其他的cpp文件放到src文件夹下,而且他的头文件使用的并不是相对路径,而是直接包含,也没有报错,这里我推荐感兴趣的同学可以去看看他的视频,讲的还是挺好的,我也是看完它的视频明白了一些东西。
1.使用界面按钮来进行运行,可以运行成功。如下图
还有两种调试方法,使用这两个头文件并修改相应的位置,也是可以成功运行的哈,感兴趣的可以自己尝试一下,如果有什么不懂的可以留言,我看到就会回复的,如果感兴趣的小伙伴多的话,我可以在讲一下如何进行cmake和gdb调试,如果你感兴趣的话,别忘了在评论区留言奥。