C/C++混合编程编译问题
情景1: C程序里面调用C++的类的接口 Makefile为: 如果用g++编译的话,没问题直接过。如果企图用gcc去编译的话,报错 可以看到是个链接错误,这是由于gcc在链接阶段企图把main.c中的函数和libpal_queue进行链接时出错,因为libpal_queue是pal_queue.cpp 编出来的,gcc碰到.cpp文件也是会按照C++的方式去处理的,因此编出来的函数名是修饰过的,而main.o在链接的时候还傻乎乎的按照c的方式去 找函数,所以就出错了。而使用g++则可以同时处理C和C++,因此链接的时候也不会有什么问题。 所以结论就是,C调用C++(main.c中调用C++的一个类的接口)的情况,使用g++去编译链接。(实际上,“编译阶段,g++会调用gcc,对于c++ 代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接, 所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++ 了,这就给人一种错觉,好像cpp程序只能用 g++ 似的” ) g++ 会自动进行 C++ 标准库的连接;用 gcc 连接 C++ 程序也可以,但是需要人为指定连接 C++ 标准库,否则就会出现undefined reference to `__gxx_personality_v/0' 之类的错误,gcc 情景2:C++中调用C(UNITTEST