Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

關於link error的問題under在.NET2003

0 views
Skip to first unread message

誰說金剛不會跳舞

unread,
Nov 11, 2003, 6:38:26 AM11/11/03
to

寫Link List,compiler的環境是MS .NET 2003
在compile時產生error

以下是程式碼:

class ListNode{
friend class LinkList ;
ListNode(){count=0;runlength=0;size=1;};
void AddCount(){count++;};
~ListNode();
private:
int count;
ListNode *rlink;
int runlength; //[runlength , size]`
int size;
};

class LinkList{
public:
LinkList(){ first = 0 , last = first; };
void AddNode(int , int);
void CheckSymbol( int , int );
~LinkList();
private:
ListNode *first;
ListNode *last;
};


void LinkList::AddNode( int runlength , int size)
{
ListNode *newnode= new ListNode ;
if (!first)
{first=newnode;
last=first;
last->runlength=runlength;
last->size=size;}
else{
last->rlink=newnode;
last=newnode;
last->runlength=runlength;
last->size=size;
}
}

void LinkList::CheckSymbol( int runlength , int size)
{
{
ListNode *CurrentNode ;
CurrentNode = first;
do{
if((CurrentNode==last) && (CurrentNode->runlength==runlength ||
CurrentNode->size==size))
{
AddNode(runlength , size);
}
if( CurrentNode->runlength==runlength && CurrentNode->size==size
)
{
CurrentNode->AddCount();
}
if((CurrentNode+1)!=last)
{
CurrentNode=CurrentNode->rlink;
}
}while(CurrentNode!=last);
}

在main裡面多寫一行 LinkList NewNode; 就會出現error msg
RLC4.obj : error LNK2001: 無法在外部之程式庫中找到或連結所需之資料型別或函式的
符號 "public: __thiscall LinkList::~LinkList(void)" (??1LinkList@@QAE@XZ)
Debug/VLCencod.exe : fatal error LNK1120: 1 個無法在外部程式庫中找到或連結所需
之資料型別或函式

可是把LinkList NewNode;這行給//掉的話 程式compiler & link就都會過 也可以run
請教一下高手我該怎麼設定才對,還是應該程式該怎麼修改才會可以link呢?

p.s 以下是compile的命令列所有選項:

/O2 /GL /FD /EHsc /Fx /Fo"Debug/" /Fd"Debug/vc70.pdb" /W0 /nologo /c /Gz


--
[32m※ [1;36m風信遊子 [35m(bbs.cm.nctu.edu.tw) [37m ★ [33mPost From: [34m 140.112.207.62 [m★ [m


好想寶貝的大臉

unread,
Nov 11, 2003, 10:36:21 AM11/11/03
to
※ 引述《Babygh...@bbs.yzu.edu.tw (奇怪1直看到美女是怎樣)》之銘言:
: ※ 引述《afar...@bbs.cm.nctu.edu.tw (誰說金剛不會跳舞)》之銘言:
: > 在main裡面多寫一行 LinkList NewNode; 就會出現error msg

: > RLC4.obj : error LNK2001: 無法在外部之程式庫中找到或連結所需之資料型別或函式的
: > 符號 "public: __thiscall LinkList::~LinkList(void)" (??1LinkList@@QAE@XZ)
: > Debug/VLCencod.exe : fatal error LNK1120: 1 個無法在外部程式庫中找到或連結所需
: 因為你忘了實作 ~LinkList() 的程式碼..
: 在class 裡的 ~LinkList(); 改成 ~LinkList() {}
: 就會過了 [m
感謝感謝 現在可以過了

不過我現在在class裡面寫~LinkList();
然後member function寫

LinkList::~LinkList()
{
LinkNode* current=first; //start at beginning
while( current != 0 ) //until end of list
{
LinkNode* pTemp=current; //remember current
current=current->rlink; //move to next link
delete pTemp; //delete old current
} //while//
}

還是會出現錯誤訊息:

------ 已開始建置: 專案: VLCencod, 組態: Debug Win32 ------

正在編譯...
RLC4.cpp
正在連結...
RLC4.obj : error LNK2019: 無法在外部之程式庫中找到或連結所需之資料型別或函式的符號 "private: __thiscall LinkNode::~LinkNode(voi
d)" (??1LinkNode@@AAE@XZ),於函式 "private: void * __thiscall LinkNode::`scalar deleting destructor'(unsigned int)" (??_GLinkNode@@AAEPAXI@Z) 中參考


Debug/VLCencod.exe : fatal error LNK1120: 1 個無法在外部程式庫中找到或連結所需之資料型別或函式

已將建置記錄儲存於 "file://g:\Homework\Dvt\Hw3\code\test1\VLCencod\Debug\BuildLog.htm"
VLCencod - 2 個錯誤,0 個警告


--
[m◆ [37m從 [31m 140.112.207.62 [37m來的水榭訪客 [m
--
[1;37m自由心靈的天堂§ [36m玲瓏水榭 [37m( [36mSungSung.Dragon2.Net [37m)§ [m

誰說金剛不會跳舞

unread,
Nov 11, 2003, 12:46:28 PM11/11/03
to
※ 引述《afar (誰說金剛不會跳舞)》之銘言:
: 寫Link List,compiler的環境是MS .NET 2003
: 在compile時產生error
: void LinkList::CheckSymbol( int runlength , int size)

: {
: {
: ListNode *CurrentNode ;
: CurrentNode = first;
: do{
: if((CurrentNode==last) && (CurrentNode->runlength==runlength ||
: CurrentNode->size==size))
^^^^^^^^^^^^^^^^^^^^^^^
請教一下這個部分compiler會過 可是執行時會說 應用程式錯誤
該處記憶體不可以read 該怎麼修正程式呢

資工校運重返榮耀

unread,
Nov 11, 2003, 1:15:12 PM11/11/03
to
※ 引述《afar...@bbs.cm.nctu.edu.tw (誰說金剛不會跳舞)》之銘言:
: ※ 引述《afar (誰說金剛不會跳舞)》之銘言:

: : 寫Link List,compiler的環境是MS .NET 2003
: : 在compile時產生error
: : void LinkList::CheckSymbol( int runlength , int size)
: : {
: : {
: : ListNode *CurrentNode ;
: : CurrentNode = first;
: : do{
: : if((CurrentNode==last) && (CurrentNode->runlength==runlength ||
: : CurrentNode->size==size))
: ^^^^^^^^^^^^^^^^^^^^^^^
: 請教一下這個部分compiler會過 可是執行時會說 應用程式錯誤
: 該處記憶體不可以read 該怎麼修正程式呢
一開始妳的 first 跟last 都是 0...想想看跑這行的時候....
執行當然會出錯...

--
手好痛啊...

--
[m [1;33;46m〒作者:cplusplus 來自:219053.D13-219.ncu.edu.tw [m
[1;36m◎二進位的世界 [37m【140.115.50.50‧binary.csie.ncu.edu.tw

0 new messages