真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Windows靜態(tài)庫用C++代碼調(diào)用C語言的舊庫方法extern”c“-創(chuàng)新互聯(lián)

靜態(tài)庫特點(diǎn)
運(yùn)行不存在
靜態(tài)庫源碼被鏈接到調(diào)用程序中
目標(biāo)程序的歸檔
C語言靜態(tài)庫
C靜態(tài)庫的創(chuàng)建
1.創(chuàng)建一個靜態(tài)庫項目
2.添加庫程序,源文件使用C文件
C靜態(tài)庫的使用
庫路徑設(shè)置:可以使用pragma關(guān)鍵字設(shè)置
#pragma comment(lib,“./lib/clib.lib”)
C語言方法

創(chuàng)新互聯(lián)公司是專業(yè)的雄縣網(wǎng)站建設(shè)公司,雄縣接單;提供網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行雄縣網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
//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語言函數(shù)名:_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;
}

以上代碼的區(qū)別在于C語言不需要函數(shù)聲明,但C++使用函數(shù)前需要聲明
C++語言函數(shù)名:?Clib_add@@YAHHH@Z和?Clib_sub@@YAHHH@Z
在這里插入圖片描述
如果用c++程序調(diào)用C語言的靜態(tài)庫
原因是之前上學(xué)的時候老師講過一個段子:
現(xiàn)在我們要破解一個芯片代碼,我們有的源碼是C語言的,三十多看前的代碼了,現(xiàn)在公司的代碼都是用C++寫的,咋辦,把以前的方法都用C++來實現(xiàn)一遍?可以,有源代碼就可以,稍微花點(diǎn)時間就可以完成,不幸的是,寫源代碼的公司倒閉了,比較Bland公司,以前的代碼丟失了,咋辦?難道原來的lib靜態(tài)庫都不能用了么?
C++調(diào)用C語言的靜態(tài)庫時會報錯
在這里插入圖片描述
方法在這里
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語言調(diào)函數(shù)時,只檢查函數(shù)名正確就可以調(diào)用,因為C++有重載的概念,所以不但要檢查函數(shù)名,還要檢查函數(shù)的參數(shù)類型,導(dǎo)致函數(shù)在靜態(tài)庫中被調(diào)用時,無法正常使用只包含文件名信息的庫文件。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


文章標(biāo)題:Windows靜態(tài)庫用C++代碼調(diào)用C語言的舊庫方法extern”c“-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://weahome.cn/article/ccoido.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部