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

本文详细介绍了如何在C++中调用C语言编写的静态库,以及C语言调用C++代码的方法。内容涵盖C++生成C静态库、C调用C++的符号表处理,以及静态库的使用步骤。此外,还讨论了如何将源文件替换为静态库文件以简化项目管理。
摘要由CSDN通过智能技术生成

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

​ 🌈专栏

⭐️ 博主码云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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

penguin_bark

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值