VC++6.0程序設計系列:[2]鏈表-鏈接庫?

我們都知道,C++程序從編碼到生成可執行文件整個過程中 經歷了 預編譯 - 編譯 - 鏈接 -生成可執行文件,其中在鏈接過程中用到 *.lib 文件,這次我們以鏈表類為例子,就製作一個我們自己的lib文件,並將製作的文件用到我們的程序當中。下面就是我生成的 My_lib.lib 文件 。

VC++6.0程序設計系列:[2]鏈表-鏈接庫

工具/原料

VC++6.0

方法/步驟

新建工程,注意新建的是 “靜態的庫工程” 如截圖所示,這個地方一定注意。

建好工程之後向工程中添加 頭文件 MyList.h,源文件MyList.cpp, 如圖所示。

其中頭文件中的代碼如下:

#ifndef __MYLIST_H__#define __MYLIST_H__struct Node { int data ; Node * next ; Node():data(0),next(0){} Node(int _d):data(_d),next(0){} Node(Node&node):data(node.data),next(node.next){} operator=(Node& node){ data = node.data ; next = node.next ; }};class MyList{private : Node * head ; int size ;public : MyList() ; MyList(int ds[] ,int n) ; ~MyList() ; void Insert(int index,Node& node) ; void Add(Node& node) ; void Remove(int index) ; void RemoveAll() ; bool Empty() const; int Size() const; Node Get(int index) const;};#endif

源文件的代碼如下所示:

#include "MyList.h"MyList::MyList(){ this->head = new Node(0) ; this->size = 0 ;}MyList::MyList(int ds[] ,int n){ this->head = new Node(0) ; this->size = 0 ; Node * p = 0; Node * q = head; int i = 0 ; for(;i next = p ; q = p ; } this->size = n ;}MyList::~MyList(){ Node * p = this->head ; Node * q ; while(p){ q = p ; p = p->next ; delete q ; } this->size = 0 ;}void MyList::Insert(int index,Node& node) { if(this->Size() next ; i++ ; } Node * q = new Node(node) ; q->next = p->next ; p->next = q ; this->size ++ ;}void MyList::Add(Node& node) { Insert(this->Size(),node) ;}void MyList::Remove(int index) { if(this->Size()<=index index < 0) throw "can not remove!"; Node * p = head ; int i = 0 ; while(p && i < index){ p = p->next ; i++ ; } Node * q = p->next ; p->next = q->next; delete q ; this->size -- ;}void MyList::RemoveAll() { Node * p = head->next ; Node * q = 0; while(p){ q = p ; p = p->next ; delete q ; } this->size = 0 ;}bool MyList::Empty() const{ return this->size ;}int MyList::Size() const{ return this->size ;}Node MyList::Get(int index) const{ if(this->Size()<=index index < 0) throw "can not get!"; Node * p = head ; int i = 0 ; while(p && i < index){ p = p->next ; i++ ; } return *(p->next) ;}

VC++6.0程序設計系列:[2]鏈表-鏈接庫

VC++6.0程序設計系列:[2]鏈表-鏈接庫

VC++6.0程序設計系列:[2]鏈表-鏈接庫

VC++6.0程序設計系列:[2]鏈表-鏈接庫

VC++6.0程序設計系列:[2]鏈表-鏈接庫

下面就是編譯生成 庫文件 My_lib.lib,這裡注意不要點擊執行,因為是沒法執行的,很好理解,生成的是鏈接文件,不是直接可執行的文件。

VC++6.0程序設計系列:[2]鏈表-鏈接庫

VC++6.0程序設計系列:[2]鏈表-鏈接庫

VC++6.0程序設計系列:[2]鏈表-鏈接庫

以上步驟就生成了我們需要的文件 My_lib.lib ,但是怎麼使用My_lib.lib這個文件呢?

下面我們就介紹一下使用方法。

新建控制檯工程,作為測試工程。如圖所示,然後講剛才的頭文件Mylist.h 導入,導入方法如下圖,然後新建測試源文件 Main.cpp ,寫入如下代碼。

此時還不能執行程序,因為我們的My_lib.lib還沒有導入,導入方法很簡單,我們先拷貝一份My_lib.lib到 lib 目錄下面,注意 lib目錄是我們自己建立的。

然後按照圖中所示 配置 additional library 在 link標籤頁做相應的設置。

Main.cpp的代碼如下

#include #include "MyList.h"using namespace std ;void Print(MyList & list){ for(int i =0 ; i < list.Size() ;i++) { cout<

VC++6.0程序設計系列:[2]鏈表-鏈接庫

VC++6.0程序設計系列:[2]鏈表-鏈接庫

VC++6.0程序設計系列:[2]鏈表-鏈接庫

VC++6.0程序設計系列:[2]鏈表-鏈接庫

最後我們編譯執行代碼,看看是否能完成鏈表的功能。

VC++6.0程序設計系列:[2]鏈表-鏈接庫

VC++6.0程序設計系列:[2]鏈表-鏈接庫

注意事項

注意建立的工程類型。

先編譯後執行

文件, 程序設計, 鏈接庫, 鏈表,
相關問題答案