C 類的封裝

2021-08-30 08:26:53 字數 2327 閱讀 2458

由於專案的需要將自己實現的演算法類封裝為dll介面,供別人的呼叫,學習了一下類的封裝,記錄一下也便以後的檢視。

在vs2015中建立一下dll專案,例如exampldll

新增標頭檔案為example.h,裡面定義了dll的介面,可以供別人使用。如下.h檔案

#ifdef exampleibdll  

#define exampleapi _declspec(dllexport)

#else

#define exampleapi _declspec(dllimport)

#endif

//可以include需要用到的標頭檔案

// 例如

#include class exampleapi addnumber

;

在addnumbe.cpp裡實現來的函式,在前面定義#define example

#define examplelibdll  

#include //標頭檔案中函式的實現

addnumber::addnumber()

addnumber::~addnumber()

生成(build)工程,在debug或者x64資料夾中會生成相應的dll及lib檔案(具體位置看自己的用的編譯平台):example.dll   example.lib

呼叫方法1)

呼叫需要各個dll的.h、.dll、.lib檔案。

1.將標頭檔案新增到工程中,並#include到需要用的地方。將lib檔案拷貝到專案中,並在 properties->linker->input->  additional dependecies 中寫入:exampledll.lib;exampledll.lib。

2.或者在程式中寫入:

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

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

呼叫方法2(推薦使用))

在方法一中,你每次建立乙個工程都需要把example.dll,example.lib,example.h三個檔案拷貝到工程裡面去,事實上這只發揮了dll對類的**保護的功能,並沒有多大的減輕程式設計人員的工作量,下面的方法可以減少程式設計人員的工作量,具體步驟:

1:將example.dll扔到windows/system32下

2:將.examplelib扔到vc的lib目錄裡

3:將方法一中的example.h扔到vc的include目錄裡

4:同方法一的最後一步。

以後你就可以像使用opengl的glut、glui等庫一樣使用你自己封裝的乙個經常復用的類了。

/ 下列 ifdef 塊是建立使從 dll 匯出更簡單的

// 巨集的標準方法。此 dll 中的所有檔案都是用命令列上定義的 dlltest_exports

// 符號編譯的。在使用此 dll 的

// 任何其他專案上不應定義此符號。這樣,原始檔中包含此檔案的任何其他專案都會將

// dlltest_api 函式視為是從 dll 匯入的,而此 dll 則將用此巨集定義的

// 符號視為是被匯出的。

#ifdef dlltest_exports

#define dlltest_api __declspec(dllexport)

#else

#define dlltest_api __declspec(dllimport)

#endif

// 此類是從 dlltest.dll 匯出的

class dlltest_api cdlltest ;

extern dlltest_api int ndlltest;

dlltest_api int fndlltest(void);

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

//#define dlltest_exports

#include "stdafx.h"

#include "dlltest.h"

// 這是匯出變數的乙個示例

dlltest_api int ndlltest=0;

// 這是匯出函式的乙個示例。

dlltest_api int fndlltest(void)

// 這是已匯出類的建構函式。

// 有關類定義的資訊,請參閱 dlltest.h

cdlltest::cdlltest()

C 類的封裝

1 private,public,protected的訪問範圍 private 只能由該類中的函式 其友元函式訪問,不能被任何其他訪問,該類的物件也不能訪問.protected 可以被該類中的函式 子類的函式 以及其友元函式訪問,但不能被該類的物件訪問 public 可以被該類中的函式 子類的函式 ...

c 類和類的封裝

1.類和類成員 c 提供了如char int long float double等基本資料型別,足夠用來解決大多數哦相對簡單的問題,但對於複雜的問題就比較困難了。c 的乙個實用特性是自定義資料型別 如之前的列舉和結構體 struct goods struct 類中預設訪問限定符是公有的,oop類中預...

c 中類的封裝

連線directshow filter cvideo 類中,這樣程式簡潔明瞭,易於操作,不容易出錯,提高了程式的魯棒性。1.類的定義 類是定義同一類所有物件的變數和方法的藍圖或原型。例如,可以建立乙個定義包含當前檔位等例項變數的自行車類。這個類也定義和提供了例項方法 變檔 剎車 的實現。例項變數的值...