一般地,C++调用C有两种形式(网上资料一般没讲全):
(1)被调用的C没有头文件
(2)被调用的C有头文件
下面一并举例:
fun1.c
#include <stdio.h>
void fun1(){
printf("in fun1()\n");
}
fun1.h
#ifdef __cplusplus
extern "C" {
#endif
void fun1();
#ifdef __cplusplus
}
#endif
fun2.c
#include <stdio.h>
#include <time.h>
#ifdef __cplusplus
extern "C" {
#endif
void fun2(){
int cnt=3;
printf("in fun2()\n");
srand(time(0));
while(cnt-->0){
printf("%d\t",rand()%5); /*0~4的随机数*/
}
}
#ifdef __cplusplus
}
#endif
下面是调用程序 main.cpp
#include <iostream>
#include "fun1.h"
using namespace std;
extern "C" extern void fun2();
int main(){
fun1();
fun2();
return 0;
}
总而言之,
(1)被调用的代码都要用extern "C" {}括住
——如果有头文件,只用括住头文件中的函数声明;
(2)调用带头文件的C只用引入头文件
调用不带头文件的C需要自己声明函数 extern "C" extern
RETURN_TYPE FUN_NAME(PARA);
参考文档:
C++调用C函数 http://blog.csdn.net/nataka/article/details/482671
C++调用C函数(带头文件)http://my.oschina.net/jlmpp/blog/10335
分享到:
相关推荐
C++调用C函数实例详解 前言:以前见到extern “C”这样的语句,只是简单地知道跟外部链接有关,但是没有深刻理解它的意思。 首先,为什么要使用extern “C”修饰符? C++调用其它语言的函数,由于编译器生成函数的...
### C++调用C与C调用C++:详解`extern "C"`的使用 在混合编程场景下,尤其是在C++程序中调用C代码或反之亦然时,正确理解和使用`extern "C"`是非常重要的。本文将详细介绍`extern "C"`在C++调用C以及C调用C++中的...
本示例“c++调用c的Demo”将展示如何在C++程序中无缝集成C代码,这在需要利用C库或者优化性能时非常有用。Ubuntu 18.04是一个广泛使用的Linux发行版,而CMake则是一种通用的构建系统,它可以帮助我们管理和构建多...
4. 实现C++调用C的逻辑:在C++源文件中调用C函数。 5. 实现C++函数:在C++源文件中定义C++函数,该函数可以被C调用。 6. 在C中调用C++函数:在C源文件中使用`extern "C"`声明C++函数,并调用它。 在实际开发中,...
首先,要进行C++调用REFPROP,你需要先下载并安装REFPROP的DLL(动态链接库)文件。DLL文件包含了REFPROP的所有功能,可供外部程序调用。确保获取的版本与你的操作系统兼容,并正确安装到系统路径中。 接下来,我们...
标签中的"调用REFPROP C++"再次强调了C++调用REFPROP库的主题,"C调用REFPROP"则意味着同样提供了C语言的调用方式。这通常涉及到使用C语言的函数指针或者C++的extern "C"语法,以确保C++编译器不会对函数进行名字...
在C语言文件(如`duke.c`)中,定义一个可被C++调用的函数。C函数必须遵循C语言的链接约定,这意味着不能使用C++特有的特性,如类、模板、名字修饰等。例如: ```c #ifdef __cplusplus extern "C" { #endif ...
C++调用C代码 一个C语言文件p.c #include void print(int a,int b) { printf(这里调用的是C语言的函数:%d,%d\n,a,b); } 一个头文件p.h #ifndef _P_H #define _P_H void print(int a,int b); #endif C++文件调用C...
C++调用C#编写的dll是一种常见的跨语言调用方式。通常,C#调用C++编写的dll可以直接使用dllimport,但是C++调用C#编写的dll需要使用托管C++将C#的dll进行一次封装,然后由非托管C++调用封装好的dll。然而,CLR VIA ...
本篇将深入探讨如何使用C++调用Android的函数,这主要涉及到JNI(Java Native Interface)技术。JNI是Java平台提供的一种机制,它允许Java代码和其他语言写的代码进行交互,包括C++。下面我们将详细讲解这一过程的...
标题 "c++调用jar包" 涉及的关键技术是C++程序如何与Java的jar包进行交互。在描述中提到,这是一个C++编写的动态库,它能够调用jar包中的功能,这意味着我们需要利用特定的技术来实现跨语言的通信。这个过程通常通过...
比如使用C++调用C#的DLL。 SwfDotNet是.net下输出flash的类库。SwfDotNet是C#编写的,作者的C#水平,真是令我佩服。这是个特别好的读写Swf文件的库。但是,我要用在C++项目中,怎么让C++调用C#的DLL呢。今天一上午都...
首先,要实现C++调用Python,通常会用到Python的`Python.h`头文件,它是Python的C API,允许C/C++代码与Python解释器进行交互。但是,这种常规方法要求目标系统已经安装了Python环境。为了解决这个问题,项目可能...
本资源“C++调用Python脚本(例程)”提供了一个完整的工程实例,演示了如何在C++程序中动态地调用Python脚本,使得C++能够利用Python的灵活性和便利性。 在C++中调用Python脚本主要有两种方法:一种是通过Python的...
首先,C++调用Python主要依赖于Python的C API(Application Programming Interface),它提供了与Python解释器进行交互的接口。要实现这个功能,你需要确保已经安装了Python开发库,包括头文件和库文件,通常在Linux...
在IT领域,C++与JavaScript(JS)的交互是一个重要的技术话题,特别是在开发...无论是C++调用JavaScript还是JavaScript调用C++,都需要深入理解两种语言的特性,以及相应的调用机制,才能有效地进行跨语言的代码交互。
首先,为了使C语言能够调用C++的方法,我们需要确保C++类具备"extern 'C'"属性,这使得C++编译器按照C语言的规则进行链接。在C++源文件中,我们可以这样声明: ```cpp extern "C" { // 在这里声明你的C++方法 ...
标题 "C++调用java jar包测试代码" 描述了一个跨语言交互的场景,其中C++程序通过调用Java编译后的jar包来执行特定功能。这个过程涉及到多个技术点,包括Java的编译和打包,C++的编程以及两者之间的接口调用。 1. *...
C++兼容C语言,这意味着C++程序可以调用C编写的函数。然而,由于C++支持命名空间和类等特性,因此在C++中调用C代码时需要遵循特定规则: - 使用`extern "C"`:为了让C++编译器知道某些函数是按照C语言的规则进行...
C++ 调用 C# COM 参数是结构体数组 C++ 调用 C# COM 参数是结构体数组是一种复杂的编程技术,涉及到多种编程语言和技术。下面我们将对这个主题进行深入探讨。 C# COM 组件 在 C# 中,COM 组件是使用 ComVisible ...