如何在C++中调用C程序?
1.引用头文件前需要加上 extern “C”,如果引用多个,那么就如下所示
extern “C”
{
#include “ s.h”
#include “t.h”
#include “g.h”
#include “j.h”
};
然后在调用这些函数之前,需要将函数也全部声明一遍。
2.C++调用C函数的方法,将用到的函数全部重新声明一遍
extern “C”
{
extern void A_app(int);
extern void B_app(int);
extern void C_app(int);
extern void D_app(int);
}
C++程序中调用被c编译器编译后的函数,为什么要加extern "C"?
C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与c语言的不同。假设某个C 函数的声明如下:
void foo(int x, int y);
该函数被C 编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字用来支持函数重载和类型安全连接。由于编译后的名字不同,C++程序不能直接调用C 函数。C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。例如:
extern “C”
{
void foo(int x, int y);
// 其它函数
}
或者写成
extern “C”
{
#include “myheader.h”
// 其它C 头文件
}
这就告诉C++编译译器,函数 foo 是个C 连接,应该到库中找名字_foo 而不是找_foo_int_int。C++编译器开发商已经对C 标准库的头文件作了extern“C”处理,所以我们可以用#include 直接引用这些头文件。
如何在C++中调用C程序?相关推荐
- m 文件 dll matlab 中调用_如何在matlab中调用python程序
现在python很火,很多代码都是python写的,如果你和我一样,习惯了使用matlab,还想在matlab中调用Python的代码,应该怎么办呢?其中一条思路:首先在matlab中调用系统脚本命令 ...
- php调用python绘图程序_如何在matlab中调用python程序
现在python很火,很多代码都是python写的,如果你和我一样,习惯了使用matlab,还想在matlab中调用Python的代码,应该怎么办呢?其中一条思路:首先在matlab中调用系统脚本命令 ...
- 如何在C++中调用python程序?
文章目录 1. Embedding Python in Another Application 将Python嵌入另一个应用程序中 1.1. Very High Level Embedding 高层嵌 ...
- 如何在Python中调用C++程序?(文中以Opencv为例,在Python中调用C++的Opencv)
https://www.cnblogs.com/zf-blog/p/11906786.html 要注意什么? 要注意在头文件.h中将需要引用的函数包括在 extern "C"中. ...
- 如何在HTML文档中调用Python程序?
如何在HTML文档中调用Python程序? 简介: 前几天突然遇到这样的一个需求,在html页面中调用python程序对图像进行处理,之后将处理后的图像重新显示在页面中.刚开始还不知道html页面 ...
- 如何在MFC中调用CUDA
如何在MFC中调用CUDA 有时候,我们需要在比较大的项目中调用CUDA,这就涉及到MFC+CUDA的环境配置问题,以矩阵相乘为例,在MFC中调用CUDA程序.我们参考罗振东iylzd@163.com ...
- 一步一步学Silverlight 2系列(21):如何在Silverlight中调用JavaScript
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- Halcon初学者知识 【13】如何在MFC中调用Halcon代码
要知道如何在MFC中调用Halcon代码,需要以下知识点: 在VC++2019的工程中,配置Halcon环境[请看此文] Halcon代码如何导出成C++代码 如何拆解halcon转换成C++的代码, ...
- fortran语言和python_如何在Fortran中调用Python
Python是机器学习领域不断增长的通用语言.拥有一些非常棒的工具包,比如scikit-learn,tensorflow和pytorch.气候模式通常是使用Fortran实现的.那么我们应该将基于Py ...
最新文章
- 编译安装Zabbix 2.2 (LNMP环境)
- Web安全实战训练营
- VSCode主题:Dracula Official
- pg与oracle区别,PostgresQL 学习记录之与oracle区别(一)
- ios图文详情加载html_前端项目009 Vue 信息分享系统 商品列表、详情
- autojs 如何获取控件的desc_owchart教程三:如何添加成交量?
- 101个微软提供的Visual Studio 2005示例
- Vijos P1691 输油管道问题【中位数+排序】
- 二元二次不定方程(佩尔方程)
- 结对开发石家庄地铁查询系统
- ActiveMQ高可用集群的搭建
- 购买服务器的个人经验
- Go Http 解析 text/plain
- Java项目:SSM快递取件管理系统
- Pytorch:模型的保存与加载 torch.save()、torch.load()、torch.nn.Module.load_state_dict()
- Spark-Shell 及 Spark-Submit
- 「Gradle学习笔记」一、构建工具
- 实战PyQt5: 050-选项卡控件QTabWidget
- 2021年“东数西算”大背景下我国IDC产业发展现状与前景展望分析「图」
- “骑驴找马”被上司发现了,怎么办?
热门文章
- Linux基本命令-1
- php pdo字符,关于php:真正的转义字符串和PDO
- 黑马程序员python笔记_#华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库...
- base.dispose(disposing) 未将对象引用到实例_程序员深入理解asp.net c#值类型和引用类型...
- case when mysql_mysql条件语句case when的实例
- python unpack infinity_fit_转换出错:输入包含NaN、infinity或对dtype(“float64”)太大的值...
- python代码覆盖率测试_利用coverage工具进行Python代码覆盖率测试
- jbl调音软件_[马自达] 佛山马自达昂克赛拉改装美国JBL汽车音响
- auto.js id为参数滑动_【Autojs教程】02Autojs PC端开发调试环境搭建
- 调查了6万多名开发者后,我们发现了这些...