VC++的DLL應用
1 用VC建立DLL動態連線庫
1.1 建立dll專案
然後選擇“一個空的dll工程”,然後點選“確定”便完成了“建立dll專案”的流程。
1.2 為dll專案編寫原始檔
新建兩個檔案:dllDemo.h, dllDemo.cpp
在標頭檔案”dllDemo.h”中宣告三個介面函式:
extern "C" _declspec(dllexport) int Sum(int a,int b);//加法函式
extern "C" _declspec(dllexport) int Max(int a, int b);//取較大值函式
extern "C" _declspec(dllexport) int Min(int a, int b);//取較小值函式
然後在“dllDemo.cpp”檔案中實現三個介面函式:
#include "dllDemo.h"
extern "C" _declspec(dllexport) int Sum(int a, int b){
return a+b;
}
extern "C" _declspec(dllexport) int Max(int a, int b){
if(a>=b)
return a;
else
return b;
}
extern "C" _declspec(dllexport) int Min(int a, int b){
if(a>=b)
return b;
else
return a;
}
1.3 生成dll檔案
編譯原始檔,如果沒有出現錯誤提示,那麼,在專案檔案根目錄的Debug資料夾內會生成一個dll檔案“dllDemo.dll”。
2 DLL呼叫
2.1 用C++呼叫顯式連結
新建一個Win32的控制檯程式進行顯式呼叫:
1. 新建“dllConsoleEvident”的Win32控制檯程式專案
2. 新建cpp檔案“dllConsoleEvident.cpp”
3. 將在第一節中,在Debug目錄下編譯生成的“dllDemo.dll”(顯式呼叫時只需要這一個檔案就夠了)檔案複製到“dllConsoleEvident”專案下的Debug資料夾根目錄下
4. 在“dllConsoleEvident.cpp”檔案中編寫以下程式碼對dll中的函式進行顯式呼叫
//動態載入DLL檔案
#include <iostream.h>
#include<windows.h>
void main(void){
typedef int(*pMax)(int a,int b);//函式指標
typedef int(*pMin)(int a,int b);
pMax Max=NULL;
pMin Min=NULL;
HINSTANCE hDLL;
hDLL=LoadLibrary("dlldemo.dll");//載入動態連結庫dlldemo.dll檔案;
Max=(pMax)GetProcAddress(hDLL,"Max");
Min=(pMin)GetProcAddress(hDLL,"Min");
if (Max)//如果取出函式成功,則執行下面的語句
{
int A=Max(5,8);
cout<<"比較的結果為"<<A<<endl;
} else {
cout<<"比較的結果為"<<"max error"<<endl;
}
if (Min){
int B=Min(5,8);
cout<<"比較的結果為"<<B<<endl;
} else{
cout<<"比較的結果為"<<"min error"<<endl;
}
FreeLibrary(hDLL);//解除安裝MyDll.dll檔案;
}
2.2 用C++隱式連結(Win32控制檯程式)
新建一個Win32控制檯程式演示靜態呼叫
1. 利用嚮導新建“dllConsoleStaticDemo”的空工程
2. 將“dllDemo.dll”和“dllDemo.lib”檔案複製到Debug目錄下,並在專案中包含“dllDemo.lib”檔案,否則會出現dll函式找不到的連線錯誤
3. 新建“dllConsoleStaticDemo.cpp”檔案,並寫入如下程式碼:
extern "C"_declspec(dllimport) int Sum(int a,int b);
extern "C"_declspec(dllimport) int Max(int a,int b);
extern "C"_declspec(dllimport) int Min(int a,int b);
#include <iostream.h>
void main(){
int c=Sum(4,5);
cout<<c<<endl;
c=Max(5,6);
cout<<c<<endl;
c=Min(5,6);
cout<<c<<endl;
cout<<"Hello,dllConsoleTest~!"<<endl;
}
相關文章
- VC++的DLL應用(含Demo演示)C++
- VC++ 呼叫 C#生成DLL的兩種方法C++C#
- XdictGrb.dll應用
- VC++基礎 字串陣列的應用C++字串陣列
- 再談在VB中呼叫VC++開發的DLL (轉)C++
- 為Linux 應用程式編寫 DLL(轉)Linux
- VC++實用巨集定義C++
- VC++串列埠程式設計之簡訊應用開發(轉)C++串列埠程式設計
- Windows下DLL程式設計技術及應用 (轉)Windows程式設計
- 用VC++編寫CGI程式 (轉)C++
- 應用例項:VC++實現廣告視窗自動關閉(轉)C++
- 用DLL控制Windows中程式的方法(轉)Windows
- mscorwks.dll在.Net中的地位以及在.Net程式碼保護方面的應用
- 用VC++實現自繪按鈕控制 (轉)
- 用VC++實現上網撥號功能 (轉)C++
- 用VC++實現不規則視窗 (轉)C++
- dll檔案是什麼 dll檔案用什麼軟體開啟
- 用diskid.dll和disk32.dll獲得硬碟序列號 (轉)硬碟
- VC++中STL的使用 (轉)C++
- DLL Basics - DLL基礎
- 用Ollydbg手脫Petite V2.2加殼的DLL
- 【應用筆記】【AN003】VC++環境下基於乙太網的4-20mA電流採集筆記C++
- 用QT在Windows下編寫dll程式QTWindows
- Qt DLL總結【二】-建立及呼叫QT的 DLLQT
- VC++ 開發非常漂亮的介面C++
- VC++ 的串列埠通訊 (轉)C++串列埠
- VC++ 6.0的安裝及使用C++
- 用VC++實現一個文字檔案閱讀器C++
- 透析ICMP協議(三): 牛刀初試之一 應用篇ping(ICMP.dll) (轉)協議
- dll應用在win10環境下怎麼使用_win10系統開啟dll檔案的方法Win10
- VC++除錯技巧C++除錯
- VC++ MFC UpdateData()用法C++
- Hook Directx + CEGUI VC++HookGUIC++
- C# 呼叫dll獲取dll物理路徑的方法C#
- VC中無LIB時的DLL隱式連結,製作與VC++相符合的LIB函式符號輸入庫 (轉)C++函式符號
- DLL的除錯 (轉)除錯
- DLL的Export和ImportExportImport
- 用VC++ 6.0製作網路自動測試程式 (轉)C++