Windows静态库用C++代码调用C语言的旧库方法extern”c“-创新互联

静态库特点
运行不存在
静态库源码被链接到调用程序中
目标程序的归档
C语言静态库
C静态库的创建
1.创建一个静态库项目
2.添加库程序,源文件使用C文件
C静态库的使用
库路径设置:可以使用pragma关键字设置
#pragma comment(lib,“./lib/clib.lib”)
C语言方法

创新互联公司是专业的雄县网站建设公司,雄县接单;提供网站设计制作、成都网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行雄县网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
//clib.c
int Clib_add(int x,int y)
{return x+y;
}
int Clib_sub(int x,int y)
{return x - y;
}
//useclib.c
#include#include#pragma comment(lib,"../debug/Clib.lib")
int main()
{int sum = 0;
	int sub = 0;
	sum = Clib_add(5,3);
	sub = Clib_sub(5,3);

	printf("sum = %d\nsub = %d\n",sum,sub);
	system("pause");

	return 0;
}

C语言函数名:_Clib_add和_Clib_sub
在这里插入图片描述
C++方法

//cpplib.cpp
int Clib_add(int x,int y)
{return x+y;
}
int Clib_sub(int x,int y)
{return x - y;
}
//usecpplib.cpp
#include#include#pragma comment(lib,"../debug/cpplib.lib")

int Clib_add(int,int);
int Clib_sub(int,int);
int main()
{int sum = 0;
	int sub = 0;
	sum = cpplib_add(5,3);
	sub = cpplib_sub(5,3);

	printf("sum = %d\nsub = %d\n",sum,sub);
	system("pause");

	return 0;
}

以上代码的区别在于C语言不需要函数声明,但C++使用函数前需要声明
C++语言函数名:?Clib_add@@YAHHH@Z和?Clib_sub@@YAHHH@Z
在这里插入图片描述
如果用c++程序调用C语言的静态库
原因是之前上学的时候老师讲过一个段子:
现在我们要破解一个芯片代码,我们有的源码是C语言的,三十多看前的代码了,现在公司的代码都是用C++写的,咋办,把以前的方法都用C++来实现一遍?可以,有源代码就可以,稍微花点时间就可以完成,不幸的是,写源代码的公司倒闭了,比较Bland公司,以前的代码丢失了,咋办?难道原来的lib静态库都不能用了么?
C++调用C语言的静态库时会报错
在这里插入图片描述
方法在这里
extern “c”
{
int Clib_add(int,int);
int Clib_sub(int,int);
}

#include#include#pragma comment(lib,"../debug/clib.lib")

extern "C" 
{int Clib_add(int,int);
	int Clib_sub(int,int);
}
int main()
{int sum = 0;
	int sub = 0;
	sum = Clib_add(5,3);
	sub = Clib_sub(5,3);

	printf("sum = %d\nsub = %d\n",sum,sub);
	system("pause");

	return 0;
}

另外,多说一句,C语言调函数时,只检查函数名正确就可以调用,因为C++有重载的概念,所以不但要检查函数名,还要检查函数的参数类型,导致函数在静态库中被调用时,无法正常使用只包含文件名信息的库文件。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

网页题目:Windows静态库用C++代码调用C语言的旧库方法extern”c“-创新互联
分享链接:https://www.cdcxhl.com/article10/ccoido.html

成都网站建设公司_创新互联,为您提供小程序开发外贸网站建设静态网站品牌网站建设外贸建站面包屑导航

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

绵阳服务器托管