c调用cpp
创建个目录 创建4个文件 c.c--c文件 cpp.cpp--c++文件 cpp.hh--c++声明文件 Makefile
c.c
#include "cpp.hh"
int main()
{
cpp_fun();
}
cpp.cpp
#include "cpp.hh"
#include
#ifdef __cplusplus
extern "C"
{
#endif
void cpp_fun()
{
printf("cpp_fun\n");
}
#ifdef __cplusplus
}
#endif
cpp.hh
#ifdef __cplusplus
extern "C" {
#endif
void cpp_fun();
#ifdef __cplusplus
}
#endif
Makefile
#c 调用cpp 函数
c:
gcc -c *.c
g++ -c *.cpp
gcc -o c_test *.o -lstdc++
#g++ -o c_test *.o
clean:
rm *.o c_test
make 一下 运行./c_test
执行显示如下:
cpp_fun
这里Makefile中用g++ -o c_test *.o也可以编译成功 用gcc需要指定包含c++标准库libstdc++.so
make clean 清除
^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^_ ^
c++调用c
创建个目录 创建4个文件 c.c--c文件 cpp.cpp--c++文件 c.h--c声明文件 Makefile
c.c
#include "c.h"
#include
void c_fun()
{
printf("c_fun\n");
}
c.h
void c_fun();
cpp.cpp
extern "C"{
#include "c.h"
};
int main()
{
c_fun();
return 0;
}
Makefile
#cpp 调用c 函数
cpp:
gcc -c *.c
g++ -c *.cpp
g++ -o cpp_test *.o
clean:
rm *.o cpp_test
make一下 然后执行./cpp_test
执行显示结果如下:
c_fun
make clean 清除