亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

在動態庫和靜態庫中使用模板(dynamic libraries ,static libraries)

2020-05-23 13:37:13
字體:
來源:轉載
供稿:網友

動態導入庫和靜態庫: 他們實質是不一樣的東西。靜態庫本身就包含了實際執行代碼、符號表等等 ,而對于導入庫而言,其實際的執行代碼位于動態庫中,導入庫只包含了地址符號表等,確保程序找到對應函數的一些基本地址信息

問題分析: 模板函數和模板類在庫中使用的時候 非常困難,但也不是不可能,因為只有相應參數類型的模板函數在庫內部有實例,就能成功導出這個模板函數。對于模板類的公有成員函數們(包括構造/析構函數)全部都必須有實例存在。

為什么要將模板實例化: 只有將導出庫里面的模板函數或者模板類實例化,才能將實例化后模板函數的地址信息和模板類實例化的地址信息保存在導出庫中。

示范:我還是以一個例子來說明吧,這是個動態庫(dynamic libraries)的例子。

//<span style="font-family:'Microsoft YaHei';">TemplateLib.h</span><span style="font-family:'Microsoft YaHei';">使用動態庫</span>#ifdefTEST_DLL_EXPORTS#define TEST_API__declspec(dllexport)#else#define TEST_API__declspec(dllimport)#endif// 導出模板函數template<typename T1>TEST_APIvoidfun1(T1);template<typename T1,typename T2>TEST_APIvoidfun2(T1 , T2);// 模板類template<typename T,int size>class TEST_APICTest{public:CTest() {};~CTest(){};T*GetDataBuff() { return m_data;}private:T m_data[size];};
// TemplateLib.cpp : 定義 DLL 應用程序的導出函數。#include "stdafx.h"#include "TemplateLib.h"// 1.利用重載來實例化不同類型的模板,代碼量大不說,基本上是重復的代碼// 2.庫的設計者不知道用戶會傳入什么類型,也就是說設計者不可能實例化每一種類型的模板。TEST_APIvoid fun1(int var1) {}TEST_APIvoid fun1(char var1){}template<typename T1,typename T2>TEST_APIvoid fun2( T1 var1, T2 var2){}// 這個名字空間不作為導出使用,唯一作用是用來例化函數模板和類模板.namespace implement_template_private{voidimplement_template(){int idata = 10;charchr = 'x';float fdata = 20.f;UINTundata= 9;char* str = "hello";// 這種方式的實例化,代碼量比重載方式少許多,但需運行一次該模板函數// 也許在某些時候憑空運行這個函數是不合理的。fun2(idata,chr);// int,charfun2(undata,str); // UINT,char*fun2<float,char*>(fdata,str); // float,char* 顯示參數// 導出類的實例化。// 1.除了要實例化提供給用戶使用的公有成員函數外,這里面還隱含的實例化了構造函數和析構函數.// 2.注意這里每一個模板的實例化都是唯一的。// 3.假如客戶如果在項目中使用了CTest<char,30> impl_obj; 將會連接錯誤, 模板的參數列表必須完全匹配。// 4.假如該模板類非常大,功能非常多,那么實例化工作可以想象是不堪忍受的。// 5.庫的設計者不知道用戶會傳入什么類型,也就是說設計者不可能實例化每一種類型的模板。CTest<char,20>impl_obj;impl_obj.GetDataBuff();CTest<int,5>impl_obj2;impl_obj.GetDataBuff();}};//

在另外一個項目中使用我們剛剛創建的動態庫

// TemplateExport.cpp : 定義控制臺應用程序的入口點。//#include "stdafx.h"#include "../TemplateLib/TemplateLib.h"#pragma comment(lib,"TemplateLib.lib")int _tmain(int argc, _TCHAR* argv[]){fun1<int>(10);fun1<char>('x');//fun1<float>(20.f);// 連接錯誤fun2<float,char*>(20,"hello");//fun2<int,int>(20,30); // 連接錯誤CTest<char,20> test;char* ret = test.GetDataBuff();//CTest<char,30> test2; // 連接錯誤return 0;}

總結與建議:不建議在導出庫中使用模板相關的技術,假如你能夠確定用戶在使用你設計的模板函數時,將傳入哪些類型(type),設計者要將這些類型的模板一 一實例化。

以上就是在動態庫和靜態庫中使用模板解決方法的全部內容和代碼,希望我們的整理能夠幫助到你。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美日韩国产精品| 国产欧美日韩综合精品| 亚洲第一精品久久忘忧草社区| 色777狠狠综合秋免鲁丝| 日韩三级成人av网| 欧洲亚洲女同hd| 免费99精品国产自在在线| 国模吧一区二区| **欧美日韩vr在线| 亚洲第一男人天堂| 国产成人久久精品| 国产一区欧美二区三区| 欧美一级bbbbb性bbbb喷潮片| 欧美成人精品不卡视频在线观看| 亚洲自拍偷拍网址| 国产+人+亚洲| 亚洲国产精彩中文乱码av| 欧美极品美女视频网站在线观看免费| 正在播放国产一区| 亚洲精品久久久久久久久久久久久| 亚洲免费影视第一页| 中文国产成人精品| 这里只有精品视频在线| 亚洲最新av在线网站| 欧美黄色性视频| 国产欧美精品一区二区三区介绍| 91国产视频在线| 亚洲性夜色噜噜噜7777| 亚洲已满18点击进入在线看片| 亚洲第一视频网| 亚洲国模精品私拍| 26uuu日韩精品一区二区| 欧美一区二区三区免费视| 精品久久久久久久久久久久久久| 国产999精品视频| 成人欧美在线视频| 国产精品美女午夜av| 亚洲精品女av网站| 日韩在线www| 精品国产老师黑色丝袜高跟鞋| 欧美亚洲国产成人精品| 日日噜噜噜夜夜爽亚洲精品| 亚洲精品美女在线观看| 色综合久久中文字幕综合网小说| 日韩av免费观影| 粉嫩av一区二区三区免费野| 黄网站色欧美视频| 日韩欧美国产骚| 欧美影院久久久| 精品国产999| 亚洲成人中文字幕| 亚洲xxxx视频| 欧美裸身视频免费观看| 亚洲精品国产综合久久| 日本人成精品视频在线| 欧美日在线观看| 中文字幕欧美亚洲| 国产欧美一区二区三区久久| 国产精品美腿一区在线看| 视频在线观看99| 国产精品丝袜久久久久久不卡| 2019中文字幕全在线观看| 国产主播在线一区| 欧美极品美女视频网站在线观看免费| 国产精品视频大全| 激情成人中文字幕| 亚洲人成在线一二| 日产精品99久久久久久| 亚洲欧美综合v| 国产精品普通话| 国产噜噜噜噜噜久久久久久久久| 成人在线免费观看视视频| 色噜噜狠狠狠综合曰曰曰| 国产精品扒开腿做爽爽爽的视频| 国产精品久久一区主播| 国产网站欧美日韩免费精品在线观看| 搡老女人一区二区三区视频tv| 亚洲精品国产suv| 久久视频免费在线播放| 日本精品久久久久影院| 国产精品久久久久999| 国产精品一久久香蕉国产线看观看| 国产成人精品在线视频| 国模gogo一区二区大胆私拍| 国产欧美一区二区白浆黑人| 91国内揄拍国内精品对白| 日韩成人黄色av| 国产精品久久久久影院日本| 久热精品在线视频| 国产精品第8页| 久久久久www| 欧美日韩激情视频8区| 亚洲视频精品在线| 久久久噜噜噜久噜久久| 久久视频在线视频| 亚洲电影第1页| 久久久久久久电影一区| 日韩一区二区在线视频| 亚洲第一精品电影| 欧美日韩不卡合集视频| 亚洲男人天堂2019| 亚洲欧美日本另类| 国产精品igao视频| 亚洲剧情一区二区| 国产在线日韩在线| 日韩有码在线播放| 成人春色激情网| 欧美第一页在线| 秋霞成人午夜鲁丝一区二区三区| 国产福利视频一区二区| 欧美床上激情在线观看| 国产亚洲视频在线| 日韩av在线网址| 97久久伊人激情网| 日韩精品小视频| 在线丨暗呦小u女国产精品| 久久久国产精品x99av| 国产精品海角社区在线观看| 成人午夜在线视频一区| 国产精品久久久久久影视| 国产专区欧美专区| www国产精品com| 日韩av一区二区在线观看| 精品久久久久国产| 青青久久aⅴ北条麻妃| 91热精品视频| 成人精品一区二区三区电影黑人| 日本一区二区三区四区视频| 亚洲精品色婷婷福利天堂| 久久久久五月天| 亚洲欧美中文日韩在线v日本| 成人亚洲欧美一区二区三区| 亚洲成人黄色在线观看| 欧美亚洲国产日韩2020| 久久久爽爽爽美女图片| 国产精品亚洲精品| 美乳少妇欧美精品| 亚洲黄色成人网| 国产亚洲欧洲黄色| 成人黄色影片在线| 日韩中文字幕视频在线观看| 成人网址在线观看| 久久精品国产96久久久香蕉| 久久中国妇女中文字幕| 亚洲欧美综合区自拍另类| 萌白酱国产一区二区| 国产亚洲成av人片在线观看桃| 精品美女久久久久久免费| 亚洲精品一区二区三区不| 亚洲精品美女在线观看| 亚洲jizzjizz日本少妇| 91欧美视频网站| 57pao成人永久免费视频| 国产精品一区二区三区久久久| 国产精品白丝av嫩草影院| 日日狠狠久久偷偷四色综合免费| 亚洲福利在线视频| 成人免费网站在线| 中文字幕国产精品久久| 国产精品一区久久久| 国产亚洲精品美女久久久久| 日本aⅴ大伊香蕉精品视频| 亚洲色图第三页| 国产欧洲精品视频|