VC動態呼叫DLL
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中呼叫這三個函式,實現程式碼如下:
HMODULE module = LoadLibrary("CyTangTP.dll");
typedef long (CALLBACK* pOpen)(int, int);//注意這裡
typedef long (CALLBACK* pSend)(long,CString,CString);//注意這裡
typedef int (CALLBACK* pClose)(long);//注意這裡
if (module)
...{
//呼叫OpenComm
pOpen Open = (pOpen)GetProcAddress(module,"OpenComm");
long port;
if(Open!=NULL)
...{
port = Open(1,9600);
MessageBox("Open");
}
else
return;
//呼叫SendMsg
pSend Send = (pSend)GetProcAddress(module,"SendMsg");
int nSend = 1;
if(Send!=NULL)
...{
nSend = Send(port,"0,20,2,1,1,1,1,0,1","RabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN12345678901234567890歡迎光臨東方信通科技");
CString str;
str.Format("%d",nSend);
MessageBox(str);
}
//呼叫CloseComm
pClose Close = (pClose)GetProcAddress(module,"CloseComm");
int nClose;
if(Close!=NULL)
...{
nClose = Close(port);
CString str;
str.Format("%d",nClose);
MessageBox(str);
}
FreeLibrary(module);
}
typedef long (CALLBACK* pOpen)(int, int);//注意這裡
typedef long (CALLBACK* pSend)(long,CString,CString);//注意這裡
typedef int (CALLBACK* pClose)(long);//注意這裡
if (module)
...{
//呼叫OpenComm
pOpen Open = (pOpen)GetProcAddress(module,"OpenComm");
long port;
if(Open!=NULL)
...{
port = Open(1,9600);
MessageBox("Open");
}
else
return;
//呼叫SendMsg
pSend Send = (pSend)GetProcAddress(module,"SendMsg");
int nSend = 1;
if(Send!=NULL)
...{
nSend = Send(port,"0,20,2,1,1,1,1,0,1","RabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN12345678901234567890歡迎光臨東方信通科技");
CString str;
str.Format("%d",nSend);
MessageBox(str);
}
//呼叫CloseComm
pClose Close = (pClose)GetProcAddress(module,"CloseComm");
int nClose;
if(Close!=NULL)
...{
nClose = Close(port);
CString str;
str.Format("%d",nClose);
MessageBox(str);
}
FreeLibrary(module);
}
[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/631872/viewspace-911296/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- VS中呼叫DLL動態庫的方法
- C++呼叫C#的動態庫dllC++C#
- VC++ 呼叫 C#生成DLL的兩種方法C++C#
- 【PB】powerbuilder呼叫VC編寫的動態連結庫UI
- P/Invoke之C#呼叫動態連結庫DLLC#
- 再談在VB中呼叫VC++開發的DLL (轉)C++
- lua——alien庫實現lua呼叫C動態連結庫(dll、so)
- 動態連結庫(DLL)
- VC++的DLL應用C++
- 反射呼叫DLL反射
- VC6.0 設定動態連結庫工程生成dll以及lib檔案的位置
- VC++畫動態曲線C++
- 當編譯VC專案時提示不能開啟生成的動態庫.dll或者.exe檔案編譯
- java動態呼叫webserviceJavaWeb
- C#呼叫外部DLLC#
- JNA--Java呼叫DLLJava
- Laravel 如何實現既能靜態呼叫,又能動態呼叫Laravel
- VC++的DLL應用(含Demo演示)C++
- 物件呼叫動態變數物件變數
- C#動態呼叫webserviceC#Web
- oracle呼叫C動態庫Oracle
- Nodejs如何呼叫Dll模組NodeJS
- C#呼叫C++DLLC#C++
- C#呼叫匯編dllC#
- VS2010編寫動態連結庫DLL及單元測試用例,呼叫DLL測試正確性
- Qt DLL總結【二】-建立及呼叫QT的 DLLQT
- 動態連結庫(DLL)的建立和使用
- 動態連結庫DLL_第1篇
- C# 呼叫dll獲取dll物理路徑的方法C#
- 動態庫的建立和呼叫
- java動態呼叫c++庫JavaC++
- C#動態呼叫WCF介面C#
- linuxjna呼叫so動態庫Linux
- EXECUTE IMMEDIATE 呼叫動態過程
- 騰訊 IVWEB 團隊:通過 ffi 在 Node.js 中呼叫動態連結庫 (.so/.dll 檔案)WebNode.js
- C#呼叫 C++的DLLC#C++
- VS2012生成C的dll並呼叫以及Python呼叫C的DLLPython
- [轉] 從 dll 程式集中動態載入窗體