作者tyc5116 (累人啊....)
看板C_and_CPP
標題Re: [問題] extern
時間Mon Oct 26 15:43:37 2009
: → tyc5116:有耶,我現在問題是這樣,我全部都寫在主程式都正常,不過因Y 10/26 14:57
: → tyc5116:為現在要用thread的功能,要把這些寫成一個函式 10/26 14:58
: → tyc5116:結果就出現這個問題了 10/26 14:58
: → james732:建議再給完整一點的程式與檔案的分配方式 10/26 15:08
大概就是像這樣
//Transition.h
class TransitionData{
public:
int ID;
bool isGateOpen;
};
//Truckload.h
#include "Transition.h"
class TruTransitionData{
typedef list<TransitionData> Contents;
public:
void addTransition(TransitionData new_Transition);
int GetCount();
private:
Contents Load;
};
然後在主程式中宣告
TruTransitionData Transition_Data;
並且使用其成員函數
MessageBox::Show(Transition_Data.GetCount().ToString());
這些都很正常,如果把他放到另一個cpp檔內
//aaa.cpp
#include "Truckload.h"
extern TruTransitionData Transition_Data;
void Procedure(){
MessageBox::Show(Transition_Data.GetCount().ToString());
}
這時候就會出錯誤了,然後這時候我主程式還沒有呼叫這一個函式
(這是函式是留著以後要用thread的)
以上,再麻煩高手回答,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.18.48.28
推 littleshan:你要在寫一行 TruTransitionData Transition_Data; 10/26 15:53
→ littleshan:來「定義」這個變數 10/26 15:54
→ littleshan:這一行寫在哪個檔案都沒差,但不寫不行 10/26 15:54
→ tyc5116:不懂,在主程式的Transition_Data就直接傳過來了不是嗎? 10/26 16:37
→ tyc5116:不是很懂你所指的定義 10/26 16:39
推 littleshan:請貼完整程式碼吧 10/26 17:09
推 Ebergies:你兩個 .cpp 檔應該不在同一個 project 裡吧 10/26 17:10
→ Ebergies:用 #using 的話你得要自己寫 dllexport 才能用 10/26 17:11
→ tyc5116:在同一個專案裡啊 10/26 17:20
→ tyc5116:我懂l大的意思了,我在主程式是這樣沒錯,在b.cpp才extern 10/26 17:29