新手请教一个C与C++的相互调用有关问题

新手请问一个C与C++的相互调用问题。
我想要在C语言中使用C++的代码。根据例子写了3个文件。
//* file TestClass.h */
 
class HJH
{
public:
    int add(int a, int b)
       {
              return (a + b);
       }
};
将C++类封装为C函数的文件(为了简略也将声明和实现放在了同一个文件中)如下:
/* file TestCpp.cpp */
 
#include "TestClass.h"
 
extern "C" int add_cpp(int a, int b);
 
int add_cpp(int a, int b)
{
       HJH hjh;
 
       return hjh.add(a, b);       
}

实际调用C++代码的C文件如下:
/*file TestC.c */
#include "stdio.h"
 
extern int add_cpp(int a, int b);
 
int main()
{
       printf("add_cpp = %d/n", add_cpp(2, 5));
       
       return 0;
}

文件TestClass.h定义并实现了一个类,该类只有一个add方法。文件TestCpp.cpp定义并实现了一个函数add_cpp,函数中定义了一个HJH类对象并调用了该对象的add方法。然后将add_cpp函数进行外部声明为C。

我现在的问题是,我要怎样在Linux下编译执行它。多谢。

------解决方案--------------------
把你的这个文件TestC.c改成TestC.cpp,红色的改不改都没多大关系,为了统一还是改下吧。编译器用g++。
------解决方案--------------------
还以为 lz 要用 c 的 compiler 编译 c++ 
------解决方案--------------------
引用:
我是要在一个C语言的环境中使用C++的函数,所以TestC.c必须是C文件。而且不能用g++。因为实际环境中用的是gcc编译。我找到了这个例子,但上面却没写明如何编译。

make TestCpp.o Test.o && g++ TestCpp.o Test.o
------解决方案--------------------
上面的文件名写错了
make TestCpp.o TestC.o && g++ TestCpp.o TestC.o