C代码调用C++动态库
最近在工作中遇到了修改C++代码嵌入到C代码中去,C肯定不能直接用C++代码,就需要自己去修改成C代码,所以我就决定在C中调用C++动态库(谁让我懒呢),话不多说,直接上步骤
第一步:编写C++代码
int_sum.cpp:
#include "int_sum.h"
int int_sum(int num0, int num1)
{
return num0 + num1;
}
int_sum.h:
#ifndef __READ_DIR_H__
#define __READ_DIR_H__
#ifdef __cplusplus
extern "C" {
#endif
int int_sum(int num0, int num1);
#ifdef __cplusplus
}
#endif
#endif
第二步:编成动态库
g++ -fPIC -shared -o libint_sum.so int_sum.cpp int_sum.h
成功如下图所示:

第三步:编写C代码
test.c:
#include <stdio.h>
#include "int_sum.h"
int main()
{
int sum = int_sum(1, 2);
printf("%d\n", sum);
return 0;
}
第四步:调用动态库,生成可执行程序,并执行程序
g++ -L. -lint_sum test.c -o test
成功如下图所示:

到这里就大功告成辣,总的来说还是比较简单的,但是在工作中再简单的东西,不经常使用也是会很容易忘记的,每次都去百度都是时间成本的浪费,所以做好笔记是一件非常重要的事情,以后遇到类似问题直接查阅,提高工作效率
C代码调用C++动态库的更多相关文章
- Delphi XE7调用C++动态库出现乱码问题回顾
事情源于有个客户需使用我们C++的中间件动态库来跟设备连接通讯,但是传入以及传出的字符串指针格式都不正确(出现乱码或是被截断),估计是字符编码的问题导致.以下是解决问题的过程: 我们C++中间件动态库 ...
- JNI_Android项目中调用.so动态库
JNI_Android项目中调用.so动态库 2014年6月3日 JNI学习 參考:http://blog.sina.com.cn/s/blog_4298002e01013zk8.html 上一篇笔者 ...
- java使用JNA框架调用dll动态库
这两天了解了一下java调用dll动态库的方法,总的有三种:JNI.JNA.JNative.其中JNA调用DLL是最方便的. ·JNI ·JNA ·JNative java使用 JNI来调用dll动态 ...
- c#调用c++动态库的一些理解
调用c++动态库一般我们这样写 [DllImport("UCamer.dll", CallingConvention = CallingConvention.Winapi)] ...
- C#调用C++动态库(dll)
在实际软件开发过程中,由于公司使用了多种语言开发,在C#中可能需要实现某个功能,而该功能可能用其他语言已经实现了,那么我们可以调用其他语言写好的模块吗?还有就是,由于C#开发好的项目,我们可以利用re ...
- C#总结(四)调用C++动态库
由于公司很多底层的SDK,都是C++开发,上层的应用软件却是C# Winform程序.在实际工作的过程中,就经常碰到了C# 程序调用C++ 动态库的问题.最近一直在和C++ 打交道,C# 怎么调用C+ ...
- python调用.net动态库
# python调用.net动态库 ### pythonnet简介------------------------------ pythonnet是cpython的扩展- pythonnet提供了cp ...
- 使用ctypes在Python中调用C++动态库
使用ctypes在Python中调用C++动态库 入门操作 使用ctypes库可以直接调用C语言编写的动态库,而如果是调用C++编写的动态库,需要使用extern关键字对动态库的函数进行声明: #in ...
- .netcore在linux下使用P/invoke方式调用linux动态库
http://www.mamicode.com/info-detail-2358309.html .netcore下已经实现了通过p/invoke方式调用linux的动态链接库(*.so)文件 1 ...
- 调用 C 动态库
调用 C 动态库 由 王巍 (@ONEVCAT) 发布于 2015/11/04 C 是程序世界的宝库,在我们面向的设备系统中,也内置了大量的 C 动态库帮助我们完成各种任务.比如涉及到压缩的话我们很可 ...
随机推荐
- boolean布尔型盲注
mysql中limit的详细用法 1.用于强制返回指定的记录行数 在查询中,经常要返回前几条或者中间某几行数据时,用到limit 语法如下 select * from table_name limit ...
- IDEA EduTools Plugin Learning Cause
背景 编程培训需求,能够检测学生的输入内容与预期一致,有课程大纲 IDEA Plugin EduTools 是一个非常出色的培训工具,具备在IDE中学习,能够通过单元测试验证正确错误,能够设置用户输入 ...
- unity Android 可后台替换图片
using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; usin ...
- rabbitMQ queue属性
Map<String, Object> args = new HashMap<String, Object>(); args.put("x-message-ttl&q ...
- MySQL表操作(下篇)--完整性约束
一.介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录FOREIGN KEY ...
- DOS下的一些命令
DOS一些命令 1.查看无线密码 netsh wlan show profiles #显示所有本地电脑加入过的wlan netsh wlan show profiles name=&q ...
- Oracle View的 With Check OPTION 參數有什麼用途?
1. 當通過View Insert數據到定義此View的SQL中的基本表的時候,insert的資料要符合SQL中here條件,否則Insert View 的操作無法成功: 2. 注意:WITH REA ...
- Windows初始化.net core环境
1.项目使用.ner core版本(例:.net core.3.1) 1.1安装运行环境 https://dotnet.microsoft.com/en-us/download 1.2安装.net 运 ...
- nginx配置文件过大导致起不来
更改src/core/ngx_conf_file.c,默认只有4k,将下面值改大重新编译
- vuex状态管理器
vuex核心概念 // vuex中一共有五个状态 State Getter Mutation Action Module import Vue from 'vue' import Vuex from ...