C语言与C++语言函数互相调用

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的环境下运行。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言C++可以通过以下几种方法进行互相调用: 1. 通过 extern "C" 声明:C++ 语言支持 extern "C" 声明,可以将 C++ 语言中的函数使用 C 语言的约定方式进行编译,从而可以被 C 语言调用。在 C++ 中,通过在函数声明加上 extern "C" 关键字,可以将该函数使用 C 语言的命名规则和调用约定进行编译。例如: ```c++ // C++ 中的函数声明 extern "C" { int add(int a, int b); } // C 语言中的函数调用 int result = add(1, 2); ``` 2. 通过头文件声明:在 C++调用 C 语言函数需要将 C 语言函数声明放在 extern "C" 的花括号中,并将其放在头文件中。在 C++ 中包含该头文件后,就可以使用 C 语言中的函数了。例如: ```c // C 语言中的头文件 #ifdef __cplusplus extern "C" { #endif int add(int a, int b); #ifdef __cplusplus } #endif // C++ 中包含头文件并调用函数 #include "c_functions.h" int main() { int result = add(1, 2); return 0; } ``` 3. 使用 extern 声明:在 C++ 中定义的函数可以通过 extern 声明,在 C 语言中进行调用。在 C++ 中,可以在函数声明加上 extern 关键字,并使用 C 语言的命名规则进行函数命名。在 C 语言中,可以使用该函数的 C 语言方式的名称进行调用。例如: ```c++ // C++ 中定义的函数 extern "C" { int cpp_add(int a, int b) { return a + b; } } // C 语言调用函数 int result = cpp_add(1, 2); ``` 上述方法可以使得 C 语言C++ 语言之间进行函数调用和数据传递,从而实现两种语言的相互调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值