C 语言调用C++语言函数使用方法
1、首先,将cpp文件中需要在C文件中调用的函数声明为:extern“C”,注:该声明在C语言中无法识别。
例:extern "C" void mytime_test();
void mytime_test()
{
Date MyDate = Date();
MyDate.add_day(3);
cout<<"Date is "<<MyDate.day()<<"\n";
cout<<"Month is "<<MyDate.month()<<"\n";
cout<<"Year is "<<MyDate.year()<<"\n";
}
上例中,mytime_test()函数调用了C++中定义的类,此处将该函数前加extern “C”进行声明,使得在C中可调用。
2、将包含该函数的CPP文件采用C++编译器编译成动态链接库xxx.so文件,并将其添加到标准的库文件路径中。
例:g++ -shared –fpic ClassTest.cpp -s -o libclass.so
cp libclass.so /lib64/
3、在c文件中采用extern 声明为外部函数,并且编译时,加上包含该函数的C++库文件。
例:extern void mytime_test();
gcc class.c –o classapp –lclass
生成的可执行文件classapp既可以在包含libclass.so的环境下运行。
C++语言调用C语言函数使用方法
1、首先将包含C++中需要调用的C函数的.c文件编译成库文件。并将生成的添加到标准困文件路径中。
例:gcc –shared –fpic –o libtest.so testlib.c
cp libtest.so /lib64
2、在调用C函数的cpp文件中,采用extern “C”{被调函数}的形式进行声明。
例:#include<iostream>
using namespace std;
extern "C"
{
void hello();
}
3、编译cpp文件。
例:g++ main.cpp –o main -ltest
生成的可执行文件main既可以在包含libtest.so的环境下运行。