🏆个人主页:企鹅不叫的博客
? 🌈专栏
?? 博主码云gitee链接:代码仓库地址
?若有帮助可以【关注+点赞+收藏】,大家一起进步!
💙系列文章💙
【初阶与进阶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")
|