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

DLL呼叫並使用Function問題

尚未結案
jarkin
一般會員


發表:17
回覆:7
積分:4
註冊:2006-08-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-05-19 11:30:56 IP:114.137.xxx.xxx 訂閱
小弟目前有一片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檔..煩請各位大大解惑..
附加檔案:4a1227f068fa6_dll.rar
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-05-19 11:48:24 IP:118.169.xxx.xxx 訂閱
請原廠給個範例比較快,通常都會有文件說明
jarkin
一般會員


發表:17
回覆:7
積分:4
註冊:2006-08-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-05-19 12:44:12 IP:114.137.xxx.xxx 訂閱
taishyang 大大~
原廠有提供VC的範例,但是小弟我VC不熟..
所以才會轉成BCB來用,但是廠商BCB不熟..
所以我也不知道要問誰..沒有熟人會BCB..蠻困擾了...
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-05-19 12:55:53 IP:163.28.xxx.xxx 訂閱
為何不直接用dll檔?
看他的宣告, bcb應該可以開啟這個dll.
------
FPGA驗證, FPGA開發平台, http://smims.com
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-05-19 13:38:25 IP:118.169.xxx.xxx 訂閱
搜尋看看VC的範例怎麼呼叫,BCB其實差不了多少


===================引 用 jarkin 文 章===================
taishyang 大大~
原廠有提供VC的範例,但是小弟我VC不熟..
所以才會轉成BCB來用,但是廠商BCB不熟..
所以我也不知道要問誰..沒有熟人會BCB..蠻困擾了...
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-05-19 13:49:49 IP:163.28.xxx.xxx 訂閱

測試成功...

[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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-05-19 16:26:05 IP:114.137.xxx.xxx 訂閱
感謝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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-05-19 16:33:11 IP:163.28.xxx.xxx 訂閱
請加上函式宣告
PVOID __stdcall (*p_dll_OpenDUT)(LPTSTR AdapterName);
至於p_dll_OpenDUT();裡面是放什麼進去我不知道, 請參考使用手冊吧...
我只針對如何取出dll函式, 與使用而已.
------
FPGA驗證, FPGA開發平台, http://smims.com
jarkin
一般會員


發表:17
回覆:7
積分:4
註冊:2006-08-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-05-19 18:37:59 IP:114.137.xxx.xxx 訂閱
感謝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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2009-05-19 19:57:02 IP:114.39.xxx.xxx 訂閱
 把mp.dll放到與執行檔同一目錄, 不需.lib
------
FPGA驗證, FPGA開發平台, http://smims.com
系統時間:2024-04-20 3:52:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!