生成DLL的幾種方法和使用方法

2021-04-27 20:02:22 字數 2385 閱讀 8002

1.用__declspec (dllexport) 約定來匯出dll函式

建立乙個edrlib動態連線庫專案:

/*edrlib.h檔案*/

#ifdef __cplusplus

#define export extern "c" __declspec (dllexport)   //如是 c++編譯則用extern"c"限制其為c模式編譯

#else

#define export __declspec (dllexport)

#endif

export bool callback edrcentertext (hdc, prect, pcstr) ;

export bool callback msgbox (pcstr);

/*edrlib.c檔案*/

#include

#include "edrlib.h"

int winapi dllmain (hinstance hinstance, dword fdwreason, pvoid pvreserved)

return true ;

} export bool callback edrcentertext(hdc hdc, prect prc, pcstr pstring)

export bool callback msgbox (pcstr pstring)

這樣就生成了乙個edrlib.lib,edrlib.dll

在專案中使用:

1.1通過edrlib.lib引用連線庫來使用

edrlib.lib放置到settings->link->input->object/libary modules中,並設定additional library path路徑正確.

**如下 :

/*test.c檔案*/

#include "stdafx.h"

#include "../edrlib/edrlib.h"   //引用標頭檔案

/*省略一些***/

edrcentertexta (hdc, &rect,text ("呼叫dll介面輸出資訊")) ;//可以直接使用該函式

/*省略一些***/

1.2通過loadlibrary來動態載入,但這裡請用dll函式檢視器,看清楚dll對外提供的函式介面名.

/*test.c檔案*/

#include "stdafx.h"

#include "resource.h"

typedef bool (__stdcall* edrcentertexta)(hdc,prect,pcstr); //定義資料型別

typedef bool (__stdcall* msgbox)(pcstr);

/*省略一些***/

hmodule hdlllib = loadlibrary("edrlib.dll");//載入成功

edrcentertexta edrcentertext2 = (edrcentertexta)getprocaddress(hdlllib,"_edrcentertext@12");

edrcentertext2(hdc, &rect,"hello") ;

freelibrary(hdlllib);

/*省略一些***/

2.用*.def檔案匯出dll函式

*.def檔案說明:http://msdn.microsoft.com/zh-cn/library/28d6s79h(vs.80).aspx

/*edrlib.h檔案*/

#ifdef __cplusplus

#define export extern "c"    //如是 c++編譯則用extern"c"限制其為c模式編譯

#else

#define export

#endif

export bool edrcentertext (hdc, prect, pcstr) ;

export bool msgbox (lpctstr);

/*edrlib.def檔案*/

library         edrlib.dll

description     '(c)2008-2009 yan'

version '1.0.0.1'

exports

msgbox @1 private

edrcentertext @2 private

我們可以通過1.1的方法來使用,但是要把edrlib.def檔案引用到test使用專案中去,project->settings->link ->projcet options    加入/def:edrlib.def

]深入淺出visual c++動態鏈結庫(dll)程式設計:http://langzi0115.bokee.com/6508109.html

VC編寫DLL幾種方法的簡介

可欣 動態連線庫最大的特點就是能節省磁碟空間.當多個程序共享同乙個dll的時候,記憶體中只有乙個dll的 通過對映來使各個程序得以呼叫.1.用vc建立乙個win32 dll 我們利用vc編寫dll有幾種方法.如果用vc建立乙個win32 dll 工程.那這個工程就應該只匯出c 的類或全域性變數.和全...

C split 幾種使用方法

第一種方法 string s abcdeabcdeabcde string sarray s.split c foreach string i in sarray console.writeline i.tostring console.readkey 輸出下面的結果 abdeab deab de第...

C split 幾種使用方法

第一種方法 string s abcdeabcdeabcde string sarray s.split c foreach string i in sarray console.writeline i.tostring console.readkey 輸出下面的結果 abdeab deab de第...