最近项目需要使用google test(以下简称为gtest)作为单元测试框架,但是项目本身过于庞大,main函数无从找起,需要将gtest框架编译成静态库使用。
因为项目本身是通过纯c语言编写,而gtest则是一个c++编写的测试框架,其中必然涉及c与c++之间的相互调用。
注意,本文的前提是,c代码采用gcc等c语言编译器编译c代码,采用g++等c++编译器编译c++代码,如果c和c++代码统一使用g++编译,大部分情况是可以实现两者代码相互调用的。
以下为踩坑过程的总结o_O||。
C 与 C++ 的函数区别
要了解两者之间如何实现相互调用,必须先了解c与c++之间的函数有什么不同。
c++作为c语言的升级版,两者必然有很多不同之处。
其中有一个重大不同点就是,c++支持函数重载,而c语言不支持。为了使函数支持重载,c++在c语言的基础上,将函数名添加上返回值和参数的类型信息。
例如,int add(int, int)这个函数,通过c++编译器编译后,可能呈现的函数名为int int_add_int_int(int, int)
(注:此处为大概地说明c++是如何将返回值和参数信息添加到函数名中的,实