a:建立目標dll檔案
1.首先建立生成dll的專案,兩種途徑,基於mfc和基於win32控制台應用程式(示例)
2.檔案->新建->專案->win32控制台應用程式,程式型別選擇dll,勾選為空專案
3.選單欄專案->新增標頭檔案,myapi.h**如下
#ifndef _dll_api
#define _dll_api _declspec(dllexport)
#else
#define _dll_api _declspec(dllimport)
#endif
extern "c" _dll_api int add(int a,int b);//自定義的函式介面
4.選單欄專案->新增對應的原始檔myapi.cpp,函式定義,**如下
#include "myapi.h"
int add(int a,int b)
5.編譯通過,在相應工程名目錄下的debug目錄下會生成檔案,後面只需要myapi.dll和myapi.lib
b:dll檔案的呼叫的兩種方式
靜態呼叫lib檔案
1.新建專案mytest,先編譯,使專案具有debug目錄,將myapi.h存放在該目錄
2.將myapi.lib檔案放在與原始檔和標頭檔案相同的目錄下
3.將lib資源新增到專案中,在新專案的主函式中,新增**
#pragma comment(lib,"myapi.lib")
4.呼叫的時候,直接呼叫函式就好了
cout《動態呼叫dll檔案
一般而言,loadlibrary函式就可以,但是如果存在當前dll呼叫外部dll的情況,很容易出現getlasterror為126或193的錯誤,
所以建議使用loadlibraryex函式,避免dll依賴錯誤
typedef int(*add)(int a,int b);
hmodule hdll = loadlibraryex(l"myapi.dll", null, load_with_altered_search_path);//vs2010 將__text置換為_t
if (hdll != null)
}else
freelibrary(hdll);
關於dll載入的三種方式
1.loadlibrary 一般是動態載入dll時(你並不需要對應的標頭檔案,和lib)
2.#pragma comment 一般是靜態載入dll時(對應的標頭檔案、dll,和lib缺一不可,並且生產的exe沒有找到dll檔案就會導致「應用程式初始化失敗」)
3.#import指令用於從乙個型別庫中結合資訊。該型別庫的內容被轉換為c++類,主要用於描述com介面
DLL的建立和使用
我們將建立的第一種型別的庫是動態鏈結庫 dll 使用 dll 是一種重用 的絕佳方式。您不必在自己建立的每個程式中重新實現同一例程,而只需對這些例程編寫一次,然後從需要該功能的應用程式引用它們即可。本演練涵蓋以下內容 建立新的動態鏈結庫 dll 專案。向動態鏈結庫新增類。建立引用動態鏈結庫的應用程式...
建立和使用DLL
首先建立個dll工程 win32控制台 dll工程 新增標頭檔案和cpp檔案,如下 ifndef dll test h define dll test h class declspec dllexport ctest endif include dll test.h include ctest ct...
VS2010下 DLL的建立和使用總結
建立和簡單的使用網上各種好人都已寫的很好了。就不去再費勁去做無用功了。此處推薦 總結一下 dll的呼叫方式可以分為隱式和顯式,各具優點和缺點。功能性函式匯出方式可以分為匯出符號匯出和def檔案裡列出匯出函式列表。注意的是def檔案列出匯出函式列表生成的dll2種呼叫方式都可以使用,但是顯式呼叫必須要...