DLL呼叫並使用Function問題 |
尚未結案
|
jarkin
一般會員 發表:17 回覆:7 積分:4 註冊:2006-08-15 發送簡訊給我 |
小弟目前有一片USB的版子並且跟原廠拿了DLL檔,內容如下:
mp.dll mp_bcb.lib -->有用過coff2omf轉過lib檔 packet32.H =============================== 目前小弟已經將mp_bcb.lib add進去了.. 也將packet32.H includer進來了.. 但是重點是小弟我不會呼叫Function...像是packet32.H裡面有一個Function是 [code cpp] extern "C" __declspec(dllexport) PVOID _stdcall OpenDUT( LPTSTR AdapterName );[/code] 小弟猜測這應該是進入USB裝置的進入點..但是我不懂得如何呼叫他並讓它開啟.. 或者是取得裡面的值等等..小弟剛接觸這種東西,有不懂得還請多多指教.. 附上DLL檔..煩請各位大大解惑.. |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
jarkin
一般會員 發表:17 回覆:7 積分:4 註冊:2006-08-15 發送簡訊給我 |
|
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
測試成功... [code cpp] HINSTANCE PlugInDLL; PlugInDLL = LoadLibrary("mp.dll"); char Msg[256]; if (PlugInDLL != NULL ) { p_dll_OpenDUT = (PVOID (__stdcall *)(LPTSTR ))GetProcAddress(PlugInDLL,"VB_OpenDUT"); if (p_dll_OpenDUT != NULL ) { sprintf(Msg, "p_dll_OpenDUT != NULL"); Memo1->Lines->Add(Msg); p_dll_OpenDUT("XXXXX"); } else { sprintf(Msg, "p_dll_OpenDUT == NULL"); Memo1->Lines->Add(Msg); } FreeLibrary(PlugInDLL); } else { sprintf(Msg, "Can not load mp.dll"); Memo1->Lines->Add(Msg); } [/code]
------
FPGA驗證, FPGA開發平台, http://smims.com |
jarkin
一般會員 發表:17 回覆:7 積分:4 註冊:2006-08-15 發送簡訊給我 |
感謝ikk大大...
我試過您的程式後會出現Error... 我把Error用掉後會出現Can not load mp.dll.... 怪怪的~不知道ikk大大的範例可以上傳一下嗎? 多謝指教!! [code cpp] HINSTANCE PlugInDLL; PlugInDLL = LoadLibrary("mp.dll"); //bool p_dll_OpenDUT; // <---會有Error多加了這個就OK了 char Msg[256]; if (PlugInDLL != NULL ) { p_dll_OpenDUT = (PVOID (__stdcall *)(LPTSTR ))GetProcAddress(PlugInDLL,"VB_OpenDUT"); if (p_dll_OpenDUT != NULL ) { sprintf(Msg, "p_dll_OpenDUT != NULL"); Memo1->Lines->Add(Msg); p_dll_OpenDUT("xxxxx"); //<-----這個也會Error,請教一下Ikk大大這個部分p_dll_OpenDUT("xxxxx");是指什麼意思呢? } else { sprintf(Msg, "p_dll_OpenDUT == NULL"); Memo1->Lines->Add(Msg); } FreeLibrary(PlugInDLL); } else { sprintf(Msg, "Can not load mp.dll"); Memo1->Lines->Add(Msg); } [/code] |
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
jarkin
一般會員 發表:17 回覆:7 積分:4 註冊:2006-08-15 發送簡訊給我 |
感謝ikk大大...
我爬了一些文發現您的程式是利用動態做連結的,所以小弟我也試著先看看可否連結dll檔... 試了幾次還是發現沒辦法連到dll檔..想請教幾個問題.. mp.dll是否需要做轉換? 用動態連結後就不需要add lib檔了嗎? 是否還要include h file? 以下是小弟我爬文參考來的但是一直沒辦法有效的連結dll檔..不知道是否哪裡還有誤..煩請指教..感謝!! =============================================================================== [code cpp] PVOID __stdcall (*p_dll_OpenDUT)(LPTSTR AdapterName); HINSTANCE hDLL=LoadLibrary("mp.dll"); if(!hDLL) { ShowMessage("Load Fail"); } else { ShowMessage("Load OK"); } FreeLibrary(hDLL); [/code] |
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |