VS2017的项目设置和之前的VS版本基本上是一致的。主要是VS2017加入Linux项目支持,然后Linux有些特性,大家不熟悉,有些坑需要踩。
Linux编译和链接的报错,和Windows不一样,所以习惯了Windows的同学,可能对于Linux的报错还是很陌生,以至于不知道是什么问题。下面来看看。
'variable' undeclared :变量未定义,同Windows的未定义的标识符
undefined reference:未定义的引用,同Windows的未定义的标识符。即只有头文件,却没有链接对应的库。
cannot find -lxxx collect2: ld returned 1 exit status :找不到库。
以上是几个最常见的错误。
对于编译,在VS2017中,Linux和Windows基本上一样,都自动处理的。只是链接的话,需要设置链接库什么的。所以这里就说说。
链接的话,如果动态库不在系统的库目录里,我们需要额外指定库的目录。这时在VS2017的项目属性的“附加库目录”添加一下库目录。如果只是添加一个库的路径,直接写一个路径即可。如果是多个库,也就有多个路径,那么此时的多个路径需要使用英文分号相隔,或者使用右侧的编辑进行添加,一行添加一个。在这个地方,我踩过坑。然后把两个库加在一行,用空格隔开,然后死活链接不成功。后来发现要用分号隔开。如下图所示:
填写链接库的名称,多个之间也是要用分号相隔。在“链接器”->“输入”->“库依赖项”中填写,如下图所示:
在Linux终端上输入下面的命令:
find / -name libXXX.so
最后面是库的文件名,需要带上lib和后缀。我搜了一下mysql的数据库的动态库的位置,如下图所示:
写了这些,我相信,VS2017编译和链接也就没有太多问题了。