作者sennin32 (Sennin32)
看板C_and_CPP
標題[問題] Link error
時間Sat Jun 6 02:32:35 2009
呼 好晚了還在跟程式奮鬥...
遇到一點問題,這問題其實常常困擾我
我用的環境是VC2008,有時候遇到這問題是重新建方案,什麼都不改就可以做了
但是有時候不行
錯誤是這樣的:
ShowHandmain.obj : error LNK2019: 無法解析的外部符號 "public: __thiscall
YSYServer::YSYServer(unsigned short,int)" (??0YSYServer@@QAE@GH@Z) 在函式
_main 中被參考
E:\Work\ComputerNetwork\ShowHand\ShowHand\Debug\ShowHand.exe : fatal error
LNK1120: 1 個無法解析的外部符號
我有include一個.h檔:YSYserver.h,這個檔案放在一個整理好的資料夾,用設定來增加
include目錄,因為這個只有.h沒有定義
所以編譯好的.lib檔是放在另一個資料夾中,一樣用設定來增加lib目錄
然後我創造一個新的專案,需要用到之前寫好的這個函式庫,因為之前的那個函式庫中
有一個clsass名字叫做YSYServer,而新的專案中也創造了一個class,這個class中宣告了
一個YSYServer指標的變數,如果只有這樣下去編譯事都沒有問題的
但是我要用new指定一個記憶體區塊給這個變數時,在使用建構子卻會發生上面說的那個
問題,有人能夠告訴我這是出了什麼問題嗎?
-----------------------------------0606更新---------------------------------
我發現一個問題
因為我在寫這個程式時,將很多東西分開寫成一個個lib(通常都是用class來寫)
假設我已經編譯好一個A.lib
而我在製作B.lib時,需要用到A
這時候不會有問題發生
但是如果這時候我又要寫一個C.exe也需要用到A.lib
卻連建構子都不能跑,一樣會跑出LINK error
請問有人遇過類似情況能幫助我解決這個問題嗎?
謝謝^^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.10.69.94
推 avhacker:YSYServer::YSYServer(unsigned short,int) 的實在寫在哪 06/06 09:31
→ sennin32:在YSYserver.cpp這個檔案中 06/06 09:38
推 avhacker:這個 constructor 該不會被宣告為 inline 吧? 06/06 10:07
→ sennin32:呃 我不懂"inline"是什麼意思耶... 06/06 10:11
※ 編輯: sennin32 來自: 124.10.69.94 (06/06 12:14)
→ sennin32:囧 沒人知道嗎O_Q? 06/06 20:53
推 littleshan:自己 google 馬上就知道 inline 的意思了 06/06 21:13
→ littleshan:何必等人解釋 06/06 21:14
→ sennin32:呃...我有查inline了,我並沒有使用那個0.0... 06/07 00:08
→ sennin32:我的意思是沒人知道這個錯誤的原因嗎 囧 讓你誤會了 抱歉 06/07 00:08
→ sennin32:我在想會不會是我編譯lib時設定出了問題... 06/07 00:09