VC動態呼叫DLL

hljhrbsjf發表於2007-04-17
CyTangTP.dll共提供三個函式,此檔案複製在執行目錄下。
在VB環境下宣告如下:
在Module1中定義動態庫函式;
Declare Function OpenComm Lib "CyTangTP.dll" (ByVal ComNo As Integer, ByVal Baud As Integer) As Long
Declare Function CloseComm Lib "CyTangTP.dll" (ByVal Handle_Of_Com As Long) As Integer
Declare Function SendMsg Lib "CyTangTP.dll" (ByVal Handle_Of_Com As Long, ByVal TPSet As String, ByVal Msg As String) As Integer

現在,我們要在VC中呼叫這三個函式,實現程式碼如下:

VC動態呼叫DLLHMODULE module = LoadLibrary("CyTangTP.dll");
VC動態呼叫DLL typedef
long (CALLBACK* pOpen)(int, int);//注意這裡
VC動態呼叫DLL
typedef long (CALLBACK* pSend)(long,CString,CString);//注意這裡
VC動態呼叫DLL
typedef int (CALLBACK* pClose)(long);//注意這裡
VC動態呼叫DLL

VC動態呼叫DLL
if (module)
VC動態呼叫DLLVC動態呼叫DLL
{
VC動態呼叫DLL
//呼叫OpenComm
VC動態呼叫DLL
pOpen Open = (pOpen)GetProcAddress(module,"OpenComm");
VC動態呼叫DLL
long port;
VC動態呼叫DLL
if(Open!=NULL)
VC動態呼叫DLLVC動態呼叫DLL
{
VC動態呼叫DLL port
= Open(1,9600);
VC動態呼叫DLL MessageBox(
"Open");
VC動態呼叫DLL }

VC動態呼叫DLL
else
VC動態呼叫DLL
return;
VC動態呼叫DLL
VC動態呼叫DLL
//呼叫SendMsg
VC動態呼叫DLL
pSend Send = (pSend)GetProcAddress(module,"SendMsg");
VC動態呼叫DLL
int nSend = 1;
VC動態呼叫DLL
if(Send!=NULL)
VC動態呼叫DLLVC動態呼叫DLL
{
VC動態呼叫DLL nSend
= Send(port,"0,20,2,1,1,1,1,0,1","RabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN12345678901234567890歡迎光臨東方信通科技");
VC動態呼叫DLL CString str;
VC動態呼叫DLL str.Format(
"%d",nSend);
VC動態呼叫DLL MessageBox(str);
VC動態呼叫DLL }

VC動態呼叫DLL
VC動態呼叫DLL
//呼叫CloseComm
VC動態呼叫DLL
pClose Close = (pClose)GetProcAddress(module,"CloseComm");
VC動態呼叫DLL
int nClose;
VC動態呼叫DLL
if(Close!=NULL)
VC動態呼叫DLLVC動態呼叫DLL
{
VC動態呼叫DLL nClose
= Close(port);
VC動態呼叫DLL CString str;
VC動態呼叫DLL str.Format(
"%d",nClose);
VC動態呼叫DLL MessageBox(str);
VC動態呼叫DLL }

VC動態呼叫DLL
VC動態呼叫DLL FreeLibrary(module);
VC動態呼叫DLL }

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/631872/viewspace-911296/,如需轉載,請註明出處,否則將追究法律責任。

相關文章