extern “C“——实现C语言和C++之间的调用

发布时间:2022-09-17 17:30

创建静态库:

        为了实现一个项目调用另一个项目中的代码,需要被调用项目能够生成 .lib文件。

        VS2019通过如下方法创建项目即可:

       extern “C“——实现C语言和C++之间的调用_第1张图片

输入项目名称、选择存储地址,点击创建:

       extern “C“——实现C语言和C++之间的调用_第2张图片

 选择 .lib静态库 和 空项目

extern “C“——实现C语言和C++之间的调用_第3张图片

 创建好项目后,完成代码进行编译运行,我的代码是C语言实现的Stack栈,编译运行后在该项目的Debug目录下就可以看到 .lib文件。

extern “C“——实现C语言和C++之间的调用_第4张图片


 以上就是被调用库的生成,这里是实现的C语言代码库,接下来在创建一个Cpp程序,让该Cpp程序调用C库。



实现C++程序调用C语言程序:

        把C语言程序的头文件引用过来,然后用 extern "C",如下

extern "C"
{
	#include "../../Stack/Stack/Stack.h"
}
//C++项目调用C库

        然后配置两个地方,

        右键项目名称->点击属性:

extern “C“——实现C语言和C++之间的调用_第5张图片

点击:链接器 -> 常规 ->找到附加库目录

extern “C“——实现C语言和C++之间的调用_第6张图片

点进去,然后添加一个目录,

extern “C“——实现C语言和C++之间的调用_第7张图片

选择调用的C语言项目对应的Debug目录,就是上面生成 .lib文件的那个目录

extern “C“——实现C语言和C++之间的调用_第8张图片

选择输入,在附加依赖项中添加一个你要调用的 .lib文件的名称,我这里是 Stack.lib 

extern “C“——实现C语言和C++之间的调用_第9张图片

        以上就完成了C++项目调用C语言库。


实现C语言调用C++库:

        C语言调用C++库还是需要上面的配置,只不过对引用的 .h文件不需要使用extern "C"修饰,需要去被调用的C++库对应的项目里去修饰,接下来展示如何去修改被调用的C++库。

        我将刚刚被调用的C语言库的文件从 .c变成 .cpp文件。

extern “C“——实现C语言和C++之间的调用_第10张图片

        然后将头文件中所有被调用函数的声明用 extern "C"来修饰,这样即可以实现C语言调用C++库。

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号