IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【初阶与进阶C++详解】第二篇:C&&C++互相调用(创建静态库)并保护加密源文件 -> 正文阅读

[C++知识库]【初阶与进阶C++详解】第二篇:C&&C++互相调用(创建静态库)并保护加密源文件

🏆个人主页企鹅不叫的博客

? 🌈专栏

?? 博主码云gitee链接:代码仓库地址

?若有帮助可以【关注+点赞+收藏】,大家一起进步!

💙系列文章💙


【初阶与进阶C++详解】第一篇:C++入门知识必备



💎一、C++调用C

🏆1.生成C静态库,C++调用

🧡首先创建一个空项目,并且把需要调用的头文件和源文件都添加进来(注意文件都是C的),此时编译会报错(没有main函数)

image-20220512110108060

🧡右键项目属性, 配置类型改成静态库

image-20220512110142917

🧡再Debug文件下,找到后缀位为 lib 的文件

image-20220512110446637

🧡此时新建一个C++项目,并且想调用C的静态库,(下面是用到C里面的函数还没有包含C头文件)

image-20220512110928215

🧡此时我们包含头文件就需要找到我们需要的头文件的目录,…表示返回上级目录。

image-20220512124548956

🧡此时编译的时候可以通过,但是链接的时候不能通过,我们还需要配置链接,右键项目,在链接器常规里面找到附加库目录,之后找到我们需要调用的静态库的Debug文件

image-20220512125355206

🧡同时在链接器,输入,附加依赖项里面在kemel32.lib前面加上我们需要的静态库Stack_c.lib,记得用==;==分隔开来

image-20220512125913565

🧡此时我们再次遍历链接都可以了但是还是会报错,因为,我们还需要将我们需要调用的头文件的源文件C改成CPP就可以了

🧡有时候我们不可能直接修改C文件的后缀为CPP,所以我们直接在CPP文件里面声明这个头文件为C的即可,告诉编译器调用的是C

image-20220512131045419

💎二、C调用C++

🧡首先创建一个文件,里面有头文件和CPP的源文件,记得也要改成静态库,得到静态库(.lib)文件

image-20220512131814695

🧡此时C调用C++的话,源文件后缀要改,引用的头文件路径要改

image-20220512132212881

🧡附加库目录用C++文件下面的两个

image-20220512132543693

image-20220512132706458

🧡此时由于C调用C++用的是C的方式,所以在符号表里面找不到C++的函数,所以按照如下方式修改

__cplusplus是C++项目自带的标识符,如果满足第一个条件就替换 extern"C"不满足就不替换,所以不管是C调用还是C++调用都解决了

image-20220512133428526

🧡下面这种方法是将函数包装起来就不用,一个一个去包装了

image-20220512134211135

💎三、利用静态库将源文件替换为静态库文件

🧡首先在写好源文件和头文件并且在将项目属性从可执行程序改成静态库

image-20220512144101918

image-20220512144108974

image-20220512144129058

之后生成解决方案(ctrl+shift+B),得到静态库lib

🧡将上面的头文件和静态库文件拷贝到需要调用的项目Debug文件下

image-20220512144350576

当需要调用静态库时,需要通过以下代码调用后台存放的静态库即可

#pragma comment(lib,"add.lib")

image-20220512144523201


  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-18 17:26:01  更:2022-05-18 17:26:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 18:28:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码