日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 充電吧
[導(dǎo)讀]? 動態(tài)鏈接庫:DLL(Dynamic Linkable Library) ? ? kernel32.dll處理內(nèi)存管理和進程調(diào)度 user32.dll控制用戶界面 gdi32.dll圖形處理 ? w

?

動態(tài)鏈接庫:DLL(Dynamic Linkable Library)

?

?

kernel32.dll處理內(nèi)存管理和進程調(diào)度

user32.dll控制用戶界面

gdi32.dll圖形處理

?

win32 dll

mfc dll

#include

#include

using namespace std;

typedef int(*LoadFunc)(int,int);

?

int main(void)

{

?

?????? HINSTANCE hInstance;

?????? LoadFunc add;

//加載dll

?

?????? hInstance=LoadLibrary(L"C:\Documents and Settings\liutao6\桌面\dlld.dll");

?????? if (hInstance!=NULL)

?????? {????

?????? add=(LoadFunc)GetProcAddress(hInstance,"Add");//獲取函數(shù)地址

?????? if (add!=NULL)

?????? {

????????????? int result=add(5,2);

????????????? cout<

?????? }

?

?????? FreeLibrary(hInstance);//釋放dll模塊

?????? }

?

}

?

?

?

extern "C" int __declspec(dllexport) Add(int,int);? //導(dǎo)出函數(shù)

?

int Add(int a,int b)

{

?????? return a+b;

}

使用MFC編寫的DLL,可以分成兩大類:

l 規(guī)則DLL——規(guī)則(regular)DLL中所包含的函數(shù),可以被所有Windows應(yīng)用程序使用;

n???????? 共享MFC——DLL中不包含MFC庫函數(shù),需要另外安裝MFC動態(tài)鏈接庫后才能使用;

n???????? 靜態(tài)MFC——DLL中包含MFC庫函數(shù),可以脫離MFC動態(tài)鏈接庫獨立使用。

l 擴展DLL——擴展(extension)DLL中所定義的類和函數(shù),只能被所MFC應(yīng)用程序使用。而且擴展DLL中不能包含MFC庫函數(shù),也需要另外安裝MFC動態(tài)鏈接庫后才能使用。

?

1 擴展DLL

使用MFC編寫的擴展DLL,可以導(dǎo)出整個類(從而能使用類中的所有成員,包括數(shù)據(jù)成員和成員函數(shù)),也可以導(dǎo)出指定的若干(成員或全局)函數(shù)。

(1)新建MFC擴展DLL

(2)添加導(dǎo)出類(MFC類).繼承自Cobject.編寫代碼并運行

AFX_EXT_CLASS intMod(intd1, int d2);//導(dǎo)出函數(shù)聲明

class? AFX_EXT_CLASS CCompute : public CObject//導(dǎo)出類聲明

?????? //#define AFX_EXT_CLASS?????? AFX_CLASS_EXPORT

?????? //#define AFX_CLASS_EXPORT __declspec(dllexport)

{

public:

??? int m_data1, m_data2;

??? CCompute();

??? CCompute(intd1,int d2);

??? virtual ~CCompute();

public:

??? int Add();

??? int Sub();

??? int Mul();

??? double Div();

?

};

(3)新建項目MFC應(yīng)用程序。選中項目名,選中菜單項“項目項目依賴項”,在彈出的“項目依賴項”對話框中,選中“依賴欄”中的

(4)新項目的頭文件包含頭文件#include "..ExtDllCompute.h"

(5)在項目的類中聲明對象CCompute *m_pComp;

void CExtClientDlg::OnBnClickedAdd()

{

?????? // TODO: 在此添加控件通知處理程序代碼

??????Comp(IDC_ADD);

}

?

void CExtClientDlg::Comp(UINT nID)//參數(shù)為按鈕標(biāo)識

{

?????? UpdateData(); //動態(tài)獲取用戶輸入的數(shù)據(jù)并賦值給對應(yīng)的控件變量

?????? m_pComp = new CCompute(m_iData1, m_iData2); //創(chuàng)建計算對象

?????? int r;

?????? double dr;

?????? switch(nID) { //進行四則和取模運算

????????????? case IDC_ADD: r = m_pComp->Add(); break;

。。。

?????? }

?????? delete m_pComp;

?????? if (nID != IDC_DIV) SetDlgItemInt(IDC_RESULT, r); //顯示整數(shù)結(jié)果

?????? else { // 顯示除法所得的實數(shù)結(jié)果

????????????? wchar_t buf[20];

????????????? swprintf_s(buf, 20, L"%g", dr);

????????????? SetDlgItemText(IDC_RESULT, buf);

?????? }

}

2? 規(guī)則DLL

使用MFC編寫的規(guī)則DLL,雖然只能導(dǎo)出函數(shù)而不能導(dǎo)出整個類,但是其導(dǎo)出的函數(shù)卻可以其他被非MFC應(yīng)用程序所調(diào)用。下面我們?nèi)酝ㄟ^上面的四則運算的例子,看看如何用關(guān)鍵字__declspec(dllexport)和extern "C"來編寫和使用導(dǎo)出若干(全局)C函數(shù)的規(guī)則MFC DLL。

使用共享MFC DLL的規(guī)則DLL

也可以選擇“帶靜態(tài)鏈接MFC的規(guī)則DLL”,差別是所生成的DLL中會包含MFC庫,當(dāng)然所生成的庫文件也會大一些(但因此可不用另外安裝MFC動態(tài)鏈接庫)。例如,在此例中,選共享MFC所生成的RegDll.dll文件只有13KB大,而選擇靜態(tài)MFC的則有199KB。

規(guī)則DLL項目是使用共享MFC還是使用靜態(tài)MFC,也可以在生成DLL項目之后,通過項目屬性對話框的“配置屬性常規(guī)”頁中的“MFC的使用”欄中的下拉式列表選項來切換,這一點與普通MFC應(yīng)用程序項目的類似。

?

1.宏定義

#define DllImport extern "C" _declspec(dllimport)

2.Cpp文件中加入

DllExport int Add(intd1,int d2) {??? return d1 + d2;}

DllExport int Sub(intd1,int d2) {??? return d1 - d2;}

DllExport int Mul(intd1,int d2) {??? return d1 * d2;}

?

?

?

3.添加依賴項和頭文件方法同上。工程文件cpp中加入

#define DllImport extern "C" _declspec(dllimport)

?

DllImport int Add(intd1,int d2);

DllImport int Sub(intd1,int d2);

DllImport int Mul(intd1,int d2);

DllImport double Div(intd1,int d2);

DllImport intMod(intd1, int d2);

?

4.使用函數(shù)

Add(m_iData1,m_iData2)

?

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉