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#
- P/Invoke之C#呼叫動態連結庫DLLC#
- VS(visual studio) C++ 封裝dll,以及其隱式呼叫與顯式呼叫(靜態動態)C++封裝
- DLL動態庫動態載入
- lua——alien庫實現lua呼叫C動態連結庫(dll、so)
- windows和linux gcc生成動態連結庫DLL和SO並用python呼叫WindowsLinuxGCPython
- exe呼叫DLL的方式
- Laravel 如何實現既能靜態呼叫,又能動態呼叫Laravel
- Nodejs如何呼叫Dll模組NodeJS
- C# 生成DLL 並 呼叫C#
- php 呼叫dll 裡面的方法PHP
- VS2012生成C的dll並呼叫以及Python呼叫C的DLLPython
- 物件呼叫動態變數物件變數
- 動態連結庫(DLL)的建立和使用
- C#呼叫 C++的DLLC#C++
- java呼叫c++動態庫之jni呼叫JavaC++
- Depends.exe檢視dll動態鏈檔案
- java動態呼叫c++庫JavaC++
- 動態庫的建立和呼叫
- C++呼叫 c#生成的dllC++C#
- Python中動態類和動態方法的建立與呼叫Python
- java呼叫DLL,呼叫北洋印表機列印二維碼標籤Java
- VC++ 崩潰處理以及列印呼叫堆疊C++
- JAVA呼叫C語言下的DLL檔案JavaC語言
- java中呼叫dll檔案的步驟Java
- AntSK 0.2.1 版本揭秘:動態載入dll,驅動Function Call新境界!Function
- IIS無法訪問動態連結庫DLL的原因
- 封裝動態庫dll與靜態庫lib(原理及簡單例項)封裝單例
- 使用使用rundll32 呼叫指定dll的方法
- Python動態變數名定義與呼叫Python變數
- Python 動態變數名定義與呼叫Python變數
- Python 動態變數名與呼叫介紹Python變數
- C#呼叫C++動態連結庫C#C++
- c#呼叫C++DLL EntryPointNotFoundException 找不到入口點C#C++Exception
- 【混合程式設計】C/C++呼叫Fortran的DLL程式設計C++
- C#呼叫IronPython動態執行Python程式碼C#Python
- SpringBoot 動態代理實現三方介面呼叫Spring Boot
- 構造器中呼叫動態繫結的方法