全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4171
推到 Plurk!
推到 Facebook!

Class TComm not found

尚未結案
tracychen
一般會員


發表:7
回覆:9
積分:3
註冊:2003-08-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-06 10:09:09 IP:211.21.xxx.xxx 未訂閱
各位大大:    我在撰寫CCD取像以及利用TComm元件控制CCD的一些參數 後來將CCD相關的function包成DLL 程式compile會過 但執行時卻出現 "Class TComm not found" ??? 原本沒有包成DLL的程式可以順利執行 不知為何包成DLL來call就會出現此錯誤?? 我是在DLL中宣告一個TComm *Comm1讓它指向我在Form所放的一個TComm元件 不知我是否忽略了什麼? 請各位大大幫忙,Thanks!    我的部分程式碼如下: [1]未包成DLL    //Open RS232 Serial Port Comm1->CommPort=pnCOM1; Comm1->PortOpen = true; //-------------------------------------------------------------------- void __fastcall TForm1::TrackBarGainChange(TObject *Sender) {         int Gain = TrackBarGain->Position;         edtGain->Text = IntToStr(Gain);         //Setting Gain         SetGain(Gain); } //-------------------------------------------------------------------- void TForm1::SetGain(int Gain) {         //For Dalsa1M30P CCD camera         //Value~=32768*log10(Gain), where 1<=Gain<=10         //Adjusting Gain: Write/Read MSB Command(Hex)=06/46         //Adjusting Gain: Write/Read LSB Command(Hex)=05/45            int Value = 32768*log10(Gain)+0.5;     //add "0.5" for 小數  第一位四捨五入         String sHexValue = IntToHex(Value, 4); //Int to Hex         String MSB_Value = sHexValue.SubString(1,2);         String LSB_Value = sHexValue.SubString(3,2);         WriteHexCommandData("06", MSB_Value);         WriteHexCommandData("05", LSB_Value); } //-------------------------------------------------------------------- void TForm1::WriteHexCommandData(AnsiString Command, AnsiString Value) {         DynamicArray ByteSend; ByteSend.Length = 2; char *EndPtr; ByteSend[0] = StrToInt(strtol(Command.c_str(),&EndPtr,16)); ByteSend[1] = StrToInt(strtol(Value.c_str(),&EndPtr,16)); Comm1->OutputByte(ByteSend); } //-------------------------------------------------------------------- [2]包成DLL *.dll部分程式碼 TComm *Comm1; //-------------------------------------------------------------------- void __stdcall CCD_OpenRS232Port(TComm *Comm, int ComNum) { Comm1 = Comm; if (Comm1->PortOpen) { ShowMessage("Com1 is already opened!"); return; } if (ComNum == 1) Comm1->CommPort=pnCOM1; else if (ComNum == 2) Comm1->CommPort=pnCOM2; Comm1->PortOpen = true; } //-------------------------------------------------------------------- void __stdcall CCD_SetGain(int Gain) { ............ } //-------------------------------------------------------------------- void __stdcall WriteHexCommandData(AnsiString Command, AnsiString Value) { .......... } //--------------------------------------------------------------------
tracychen
一般會員


發表:7
回覆:9
積分:3
註冊:2003-08-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-06 10:12:22 IP:211.21.xxx.xxx 未訂閱
Sorry! 我放錯版了 可否請版主幫忙放到BCB的板上 謝謝!!
anpino
版主


發表:31
回覆:477
積分:231
註冊:2003-01-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-01-09 09:37:42 IP:61.66.xxx.xxx 未訂閱
[project]->[options]->[packages]->將Build with runtime packages打勾取消。 以及 [project]->[options]->[Linker]->將Use dynamic RTL打勾取消。
系統時間:2024-07-01 2:39:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!