栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

个人主页:企鹅不叫的博客

​ 专栏

  • C语言初阶和进阶
  • C项目
  • Leetcode刷题
  • 初阶数据结构与算法
  • C++初阶和进阶
  • 《深入理解计算机操作系统》
  • 《高质量C/C++编程》

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

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

系列文章

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


文章目录
  • 系列文章
  • 一、C++调用C
    • 1.生成C静态库,C++调用
  • 二、C调用C++
  • 三、利用静态库将源文件替换为静态库文件


一、C++调用C 1.生成C静态库,C++调用

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

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

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

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

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

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

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

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

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

二、C调用C++

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

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

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

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

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

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

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

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

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

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

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

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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/875200.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号