dll實現(動態鏈結庫)

2021-06-18 12:02:47 字數 2115 閱讀 8385

下面我們實現自己的dll,並且利用乙個測試案例展示使用方法

第一部分:開發dll

注:環境:vs2010編譯器

新建win32 dll專案:

新建乙個標頭檔案,和專案同名

在dll2.h裡新增:

#ifndef dll2_api

#define dll2_api  _declspec(dllimport)

#endif

dll2_api int   add(int a,int b);

dll2_api int   subtract(int a,int b);

class dll2_api point;

在dll2.cpp裡新增:

// dll2.cpp : 定義 dll 應用程式的匯出函式。

#pragma once

#define dll2_api  _declspec(dllexport)

#include "stdafx.h"

#include "dll2.h"

int  add(int a,int b)

int  subtract(int a,int b)

point::point(int x,int y)

point::~point()

int  point::getx() const

int  point::gety() const

void point::set(int x,int y)

編譯執行(或生成)

此時在debug目錄下:

我們要的就是dll2.dll和dll2.lib檔案以及我們自己建立的dll2.h檔案

第二部分:測試案例

下面我們來測試剛才開發的dll

步驟:

1.新建乙個win32控制台工程

2.將剛才生成的三個檔案(dll2.h  dll2.lib  dll2.dll)copy到當前執行路徑下

3.新增內容如下:

// dll2test.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include

#include "dll2.h"

#pragma comment(lib,"dll2.lib")

#include

using namespace std;

int _tmain(int argc, _tchar* argv)

{cout<

point *pt=new point(10,20);

cout<

pt->set(20,10);

cout<

截圖:

動態鏈結庫DLL

函式和資料被編譯進乙個二進位制檔案 通常擴充套件名為.lib 靜態庫 在使用靜態庫的情況下,在編譯鏈結可執行檔案時,鏈結器從庫中複製這些函式和資料並把它們和應用程式的其它模組組合起來建立最終的可執行檔案 exe檔案 在多個同樣的程式執行時,系統保留了許多重複的 副本,造成記憶體資源浪費。動態庫 使用...

DLL(動態鏈結庫)程式設計

dll是現在常見的檔案,它整合了程式的很多功能在裡面。一般情況下,它不能直接被執行,常見的使用方法是用其他的 exe呼叫其執行,以使其內部功能表現出來。還有 ocx檔案也與之類似,也就是人們常說的com 1.簡要 windows api中所有的函式都包含在dll中,其中有3個最重要的dll。1 ke...

DLL 動態鏈結庫 專題

windows api中所有的函式都包含在dll中,其中有3個最重要的dll。1 kernel32.dll 它包含那些用於管理記憶體 程序和執行緒的函式,例如createthread函式 2 user32.dll 它包含那些用於執行使用者介面任務 如視窗的建立和訊息的傳送 的函式,例如createw...