C语言 C++相互调用问题

1. C++调用C语言函数

C语言头文件  c_header.h

#ifndef __C_HEADER_H_
#define __C_HEADER_H_

#ifdef __cplusplus
extern "C"
{
#endif

int c_add(int a, int b);

void c_print_data(int x);

#ifdef __cplusplus
}
#endif

#endif

C语言实现文件 c_realize.c

#include <stdio.h>
#include "c_header.h"

int c_add(int a, int b)
{
	return a+b;
}

void c_print_data(int x)
{
	printf("int c_print_data, x is: %d\n", x);
}

C++测试文件cpp_test.cpp

#include <iostream>
#include "c_header.h"
using namespace std;

void main()
{
	int a=23;
	int b=32;
	c_add(a, b);
	c_print_data(a);
}

2. C语言调用C++代码

c++头文件  cpp_header.h

#ifndef _CPP_HEADER_H_
#define _CPP_HEADER_H_

int cpp_add(int a, int b);

void cpp_print_data(int x);

#endif

C++实现文件  cpp_realize.cpp

#include <iostream>
#include "c_header.h"
using namespace std;

#ifdef __cplusplus
extern "C"
{
#endif

int cpp_add(int a, int b)
{
	return a+b;
}

void cpp_print_data(int x)
{
	cout<<"int the cpp_print_data, x is:"<<x<<endl;
}

#ifdef __cplusplus
}
#endif

C语言测试文件  c_test.c

#include <stdio.h>
#include "cpp_header.h"

void main()
{
	int a=4;
	int b=23;
	printf("result is: %d\n", cpp_add(a, b));
	cpp_print_data(a);
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-03 17:37:00

C语言 C++相互调用问题的相关文章

C&amp;C++——C函数与C++函数相互调用问题

C C++相互调用 在项目中融合C和C++有时是不可避免的,在调用对方的功能函数的时候,或许会出现这样那样的问题,但只要我的C代码和我的C++代码分别都能成功编译,那其他就不是问题.近来在主程序是C语言,而调用C++功能函数的时候,C++的*.h头文件都能找到,功能函数也都定义了,最重要的是,单独编译C++的时候,完全没有问题,但当用主程序的C调用C++的功能函数时,总是提示该函数未定义(undefined),这里分析问题的出处便是混合调用出现的问题了.关键点在这里:我们就靠在C++的*.h和*

C语言与汇编语言相互调用原理以及实例

下面两个分别是一个foo.asm(汇编语言文件),bar.c(c语言文件) 首先来了解C语言为什么能调用汇编语言,以及汇编语言为什么能调用C语言.其实不管是C语言还是汇编语言想要执行都是最终编译链接成为二进制文件. 注意是编译链接这个两个步骤,编译产生的并不是可执行的二进制文件,链接之后才是可执行的二进制文件. 这里一定要明确编译和链接是两个步骤,生成的文件格式也是不一样的. 编译生成的文件是一定格式的,里面包括函数符号表.参数表...等信息,这些信息主要是提供给链接阶段使用,函数调用是怎么调用

C程序与Lua脚本相互调用

Lua脚本是一种可用于C程序开发/测试的工具,本篇介绍一下C程序与Lua脚本如何进行相互调用,更加详细的操作参见<Programing in Lua>.本文分为3个部分:1.Windows环境下Lua的下载以及安装注意事项:2.Visual C++6.0中Lua的配置:3.C程序与Lua脚本相互调用实例. 1.Windows环境下Lua的下载以及安装注意事项 a.下载Lua for Windows,笔者用的版本是V5.1.4-35: b.上微软官网,下载Visual C++运行库——vcred

JAVA与.NET的相互调用——利用JNBridge桥接模式实现远程通讯

分布式开发的历史 利用Remote方式调用远程对象实现服务器与客户端之间通讯是一种常用的网络开发方式,在.NET与JAVA开发当中,对Remote远程对象早已有着足够的支持(对Remote远程对象调用有兴趣的朋友欢迎参考一下利用远程对象实现分布式开发). 从2003年开始.NET当中就盛传着.NET Remoting远程对象调用的分布式开发,.NET Remoting主要用于管理跨应用程序域的同步和异步RPC 会话.在默认情况下,Remoting可以使用 HTTP 或 TCP 协议进行信息通讯,

C# Matlab 相互调用

转自禾木junjie原文C# Matlab 相互调用 测试环境 VisualStudio2013 / .net4.0 Matlab2015b 高版本的matlab对外接其它语言做得很方便了,并不需要一堆的配置. 其它语言与matlab的交互操作也类似. C#调用Matlab 基本思路:将matlab函数打包成DLL文件,联合matlab数据支持DLL(MWArray.dll),交付给其它语言程序使用. 1.Matlab端的操作 编写matlab函数: function [result,m,n]

lua编程之lua与C相互调用

lua是扩展性非常良好的语言,虽然核心非常精简,但是用户可以依靠lua库来实现大部分工作.除此之外,lua还可以通过与C函数相互调用来扩展程序功能.在C中嵌入lua脚本既可以让用户在不重新编译代码的情况下修改lua代码更新程序,也可以给用户提供一个自由定制的接口,这种方法遵循了机制与策略分离的原则.在lua中调用C函数可以提高程序的运行效率.lua与C的相互调用在工程中相当实用,本文就来讲解lua与C相互调用的方法. Lua与C相互调用的首要问题是如何交换数据,lua API使用了一个抽象的栈与

C和C++相互调用

在项目中融合C和C++有时是不可避免的,在调用对方的功能函数的时候,或许会出现这样那样的问题.近来在主程序是C语言,而调用C++功能函数的时候,C++的*.h头文件都能找到,功能函数也都定义了,最重要的是,单独编译C++的时候完全没有问题,但当用主程序的C调用C++的功能函数时总是提示该函数未定义(undefined).这是什么问题?如何解决? 关键点在这里:我们就靠在C++的*.h和*.cpp的头尾加入下面代码才得以解决问题. #ifdef __cplusplusextern "C"

JAVA与.NET的相互调用——通过Web服务实现相互调用

JAVA与.NET是现今世界竞争激烈的两大开发媒体,两者语言有很多相似的地方.而在很多大型的开发项目里面,往往需要使用两种语言进行集成开发.而很多的开发人员都会偏向于其中一种语言,在使用集成开发的时候对另一种语言感觉到畏惧.在这里在下向各位介绍一下,JAVA与.NET相互调用的例子.下面的介绍主要包括三方面:一是通过常用Web服务进行相互调用,二是使用TCP/IP套接字进行相互调用,三是使用Remote实现远程对象相互调用. 在这章里面先为大家介绍一下最简单,最常用的Web服务相互调用方式.首先

.Net 与 Java 的服务接口相互调用

本文介绍.Net 与 Java 相互调用的例子.下面的介绍主要包括三方面:一是通过常用Web服务进行相互调用,二是使用TCP/IP套接字进行相互调用,三是使用Remote实现远程对象相互调用. 首先说一下Web服务的来源,Web服务是一种新的Web应用程序分支,可以执行从简单的请求到复杂商务处理等任何功能.一旦部署以后,其他Web服务应用程序可以发现并调用它部署的服务. Web Service是一种应用程序,它可以使用标准的互联网协议,像超文件传输协议(HTTP).简单对象访问协议(SOAP).