線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:933
推到 Plurk!
推到 Facebook!

Unresolved external 錯誤

答題得分者是:RaynorPao
Sarick
一般會員


發表:14
回覆:19
積分:6
註冊:2004-01-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-21 12:22:12 IP:210.202.xxx.xxx 未訂閱
//------------------------A.h #ifndef AH #define AH    class A { private:    public:    bool  AA(void); bool  BB(void); };    #endif        //-----------------------A.cpp    #pragma hdrstop #include "A.h" #pragma package(smart_init)    bool  A::AA(void) {...} bool  A::BB(void) {...}    //-----------Unit15.cpp        #include  #pragma hdrstop #include "Unit15.h" #include "A.h" #pragma package(smart_init) #pragma link "ColorButton" #pragma resource "*.dfm" TForm15 *Form15; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void __fastcall TForm15::ColorButton1Click(TObject *Sender) { A *test = new A; test->AA(); } 想請問各位前輩 上面ㄉCode 為什麼會出現 Unresolved external 錯誤 ㄋ.. 感激不盡!!
zilch
中階會員


發表:5
回覆:87
積分:78
註冊:2002-09-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-21 13:43:18 IP:218.167.xxx.xxx 未訂閱
把 bool A::AA(void) {...} bool A::BB(void) {...} 放到 a.h
Sarick
一般會員


發表:14
回覆:19
積分:6
註冊:2004-01-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-21 14:08:12 IP:210.202.xxx.xxx 未訂閱
zilch 你好 能不能請教一下前輩 *.cpp 不是來做實做ㄉㄇ *.h 來做定義ㄉㄇ?? 這樣ㄉ化是不是就把*.cpp 混合到*.h 裡面ㄌㄋ?_? 或是說..這樣本來就是對ㄉ...(小弟目前是直接Inculde *.cpp 到各個*.cpp 裡面) 小弟對這個部分不是頂清楚ㄉ.. 能不能請前輩指導一下!! 因為小弟有非常多ㄉ*.cpp 及 *.h 必須要共用小弟ㄉ習慣是都在*.cpp inculde *.h 以確保不會 重覆定義.又可以選定自己要用ㄉHeader 來用 不知道...這樣做是不是正確ㄉ..希望各位大大指教
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-21 14:17:25 IP:203.73.xxx.xxx 未訂閱
引言: *.cpp 不是來做實做ㄉㄇ *.h 來做定義ㄉㄇ?? 這樣ㄉ化是不是就把*.cpp 混合到*.h 裡面ㄌㄋ?_? 或是說..這樣本來就是對ㄉ...(小弟目前是直接Inculde *.cpp 到各個*.cpp 裡面) 小弟對這個部分不是頂清楚ㄉ.. 能不能請前輩指導一下!! 因為小弟有非常多ㄉ*.cpp 及 *.h 必須要共用小弟ㄉ習慣是都在*.cpp inculde *.h 以確保不會 重覆定義.又可以選定自己要用ㄉHeader 來用 不知道...這樣做是不是正確ㄉ..希望各位大大指教
Serick 你好:
(1)*.h 用來宣告,*.cpp 則用來實作,所以你的基本觀念是正確的,而我們一
   般慣例的用法也是如此
(2)之所以會發生 link error 的原因,小弟我猜是因為你並沒有把 A.cpp 給加
   入你的 Project 造成的
(3)在 BCB 開發環境中按「View/Project Manager」出現「Project Manager」
   Dialog,在你的專案名稱樹狀結構裡面,檢查是否有檔案 A.cpp 的存在?如
   果沒有的話,在你的專案名稱上按右鍵,選擇「Add」,把檔案 A.cpp 加入
   ,重新編譯應該就沒有這個問題了
(4)除了 (3) 的動作要多做以外,其餘的部分,只需要照你第一篇文章中的做法
   就可以了
-- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2004/06/21 14:35:21
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
Sarick
一般會員


發表:14
回覆:19
積分:6
註冊:2004-01-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-21 16:18:50 IP:210.202.xxx.xxx 未訂閱
包大人您好.    久仰您ㄉ大名(...分數實在太驚人ㄌ..) 非常感謝您ㄉ幫忙.不管是觀念上或是實做上.. 感謝!! 很努力但常碰壁ㄉ >
zilch
中階會員


發表:5
回覆:87
積分:78
註冊:2002-09-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-06-21 16:27:22 IP:218.167.xxx.xxx 未訂閱
引言: zilch 你好 能不能請教一下前輩 *.cpp 不是來做實做ㄉㄇ *.h 來做定義ㄉㄇ?? 這樣ㄉ化是不是就把*.cpp 混合到*.h 裡面ㄌㄋ?_? 或是說..這樣本來就是對ㄉ...(小弟目前是直接Inculde *.cpp 到各個*.cpp 裡面) 小弟對這個部分不是頂清楚ㄉ.. 能不能請前輩指導一下!! 因為小弟有非常多ㄉ*.cpp 及 *.h 必須要共用小弟ㄉ習慣是都在*.cpp inculde *.h 以確保不會 重覆定義.又可以選定自己要用ㄉHeader 來用 不知道...這樣做是不是正確ㄉ..希望各位大大指教
用意當然對,可是這樣的寫法必須把 bool A::AA(void) {...} bool A::BB(void) 寫在另一個 .cpp 檔,且這個 .cpp 不含 main()同時 #ifndef AH #define AH ... ... #endif必須寫在這個.cpp檔 然後再在主程式中include 這個.cpp 或如RaynorPao所說的作法 .... 而我的作法是個人較習慣的作法,同時個人以為這種作法較易維護
系統時間:2024-06-29 17:17:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!