一、生成dll
1、用vc建立乙個win32dll工程--dlltest,選上「匯出符號」;
2、在dlltest.cpp中編寫匯出函式fun(),這個函式是別的程式要呼叫的函式:
int fun(int i)
3、在dlltest.h中宣告匯出這個函式:
__declspec(dllexport) int fun(int i);
4、第三步也可以用def檔案來指定要匯出的函式,這樣做可以在程式執行過程中顯式的載入dll。關於在程式執行過程中顯式的載入dll見 二、呼叫dll。
新增乙個def檔案到工程,寫入如下內容:
exports
fun5、編譯這個工程,生成dlltest.dll,同時也生成了dlltest.lib檔案。這個檔案是供程式開發用的導入庫。
二、呼叫dll
呼叫dll有兩種方法:
裝載期間動態鏈結--模組可以向呼叫本地函式一樣呼叫從其他模組匯出的函式。裝載期間鏈結必須使用dll的導入庫,也就是.lib檔案。它為系統提供了載入這個dll和定位dll中的匯出函式所需要的資訊。
執行期間動態鏈結--程式執行期間可以使用loadlibrary載入這個dll,然後呼叫getprocaddress函式取得dll匯出函式的位址,然後通過函式位址呼叫dll中的函式。
1、裝載期間動態鏈結。
#include
#include
#include "dlltest.h"
//要鏈結到的dlltest.lib庫
#pragma comment(lib,"dlltest.lib")
void main()
2、執行期間動態載入
#include
#include
typedef void (*pfun)(int);//宣告函式原型
void main()
在VC中建立DLL檔案
一.win32動態鏈結庫 1.製作的步驟 1 新建win32 dynamic link library工程,工程名為mydll,選擇a dll project型別。2 mydll.h的內容如下 extern c declspec dllexport int sum int a,int b 本文所有的...
visudal studio建立dll與呼叫dll
版本visudal studio 2015 剛剛接觸dll這東西,在建立和使用dll的過程中,踩了不少坑,在度娘裡有各種各樣的方法,但有的地方說得不夠詳細清楚,在綜合各種方法後,我總結了由建立到使用的過程,在這裡我只總結最常用的執行時動態鏈結,靜態的就不多說了,希望對你們有幫助。一 dll建立 這一...
QT調VC的DLL實驗總結
本文主要介紹 如何在qt程式中呼叫vc的dll庫 包括 隱式載入和顯式載入 編譯選項 匯出函式 呼叫約定和錯誤分析。一 開發環境 1,qt5.4.1 mingw compiler,生成caller程式。2,vs2015,生成win32 dll庫。二 隱式載入 1,新建vc的dll 使用vs2015新...