如何將ListBox傳入dll的函式中 |
|
hank0272
一般會員 發表:2 回覆:3 積分:1 註冊:2006-11-07 發送簡訊給我 |
各位先進,大家好:
最近因為程式需要,所以在改成dll架構時,發生了一個問題:執行load dll的程式中,似乎不能傳進一個TListBox。希望各位先進能給小弟一些指導!謝謝! 在寫dll函式以VCL的方式如下: Dll.CPP: void __stdcall f_Edit(TListBox *List1)//需要用到這個ListBox去做一些處理 { List1->Visible=false; List1->Clear(); List1->Items->LoadFromFile(ExtractFilePath(Application->ExeName) "List");//之後對其內容做處理 ... } Dll .h: extern "C"{__declspec(dllexport) void __stdcall f_Edit(TListBox *List1);} Run_Dll.cpp: #include #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { typedef int (*GETNUMBER)(void); HINSTANCE dll; GETNUMBER showEdit; dll=::LoadLibrary("Editing.dll");//dll的專案為Editing.bpr if(dll!=NULL) { showEdit=(GETNUMBER)::GetProcAddress(dll, "_f_Edit"); if(showEdit!=NULL) { TListBox *List1 = new TListBox(this); showEdit(List1);//這行會出錯,錯誤訊息: E2226 Extra parameter in call delete List1; } else { ShowMessage("Error GetProcAddress"); } FreeLibrary(dll); } else { ShowMessage("Error LoadLibrary"); } } 小弟用的是bcb 5.0,在Windows XP中執行。 |
coldwind1234
一般會員 發表:3 回覆:25 積分:20 註冊:2006-08-01 發送簡訊給我 |
|
hank0272
一般會員 發表:2 回覆:3 積分:1 註冊:2006-11-07 發送簡訊給我 |
謝謝coldwind1234大大的回覆,不過小弟初寫dll沒有多久,對於您所指出的型式不懂,能否請coldwind1234大大再次的給予指導呢?謝謝您的幫忙!
===================引 用 文 章=================== getNumber=(GETNUMBER)::GetProcAddress(dll, "_f_Edit"); 這行錯了 必需要將GetProcAddress(dll, "_f_Edit");轉型成 void __stdcall f_Edit(TListBox *List1) 這種型式 試試吧: ------------------------------------------------------------------------------------ |
hank0272
一般會員 發表:2 回覆:3 積分:1 註冊:2006-11-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |