新手请教一个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++
------解决方案--------------------
make TestCpp.o Test.o && g++ TestCpp.o Test.o
------解决方案--------------------
上面的文件名写错了
make TestCpp.o TestC.o && g++ TestCpp.o TestC.o
我想要在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++
------解决方案--------------------
make TestCpp.o Test.o && g++ TestCpp.o Test.o
------解决方案--------------------
上面的文件名写错了
make TestCpp.o TestC.o && g++ TestCpp.o TestC.o