省略生成libmodbus so库的过程,可查看我其余文章,有生成的详细过程。
so库的本质,是一堆 .o文件的集合,熟悉makefile的都知道,.o是.c文件经过编译后产生的object文件。不管是main.c还是mian.cpp,都要编译成main.o 然后main.o再链接其余的依赖库或者其他.o生成最终可执行目标文件。
C语言h文件里,是有函数的声明的,如果在cpp中用到了c.h声明的函数的话,就成了C++混合C编程。 c++因为支持函数重载,其编译规则不同于c,一般需要在c.h里加入extern "C" 来告诉编译器此段程序按C的规则来编译,
#ifdef __cplusplus
extern "C"
{
Cfunc()
}
#endif
在VSCODE里,如果需要使用C++编程,需要定义一下__cplusplus,具体在c_cpp_properties..json里的defines项目里加入。
然后编写个main.cpp函数,发现找不到C++的 iostream文件, 在settings.json文件里加上两行
就可以找到了。