標(biāo)簽(空格分隔): 學(xué)習(xí)筆記
創(chuàng)建動(dòng)態(tài)庫需要生成.dll和.lib兩個(gè)文件 創(chuàng)建方法: 第一步:文件->新建->項(xiàng)目->win32控制臺(tái)應(yīng)用程序 項(xiàng)目名稱:DLLGenerator 應(yīng)用程序類型:DLL 附加項(xiàng)目:空項(xiàng)目
第二步:在創(chuàng)建的dll工程中編寫自己需要編譯成dll的函數(shù)cpp和頭文件h
第三步:建立dll源文件dllmain.cpp,用來定義應(yīng)用程序的入口點(diǎn)
// dllmain.cpp : 定義 DLL 應(yīng)用程序的入口點(diǎn)。#include <windows.h>BOOL APIENTRY DllMain(HMODULE hModule, DWord ul_reason_for_call, LPVOID lPReserved ){ switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE;}第四步,建立源文件Source.def 添加->新建->visual C++ ->模塊定義文件(.def) - 在此文件第一行引號(hào)中填你的項(xiàng)目名稱即可,EXPORTS下面列出要生成的函數(shù)名稱 格式:“名稱 @序號(hào)”)
LIBRARY "DLLGenerator"EXPORTS Add @1 Mul @2第五步:點(diǎn)擊編譯生成解決方案,顯示生成完成。此時(shí)debug目錄下就會(huì)出現(xiàn).dll文件和.lib文件
第六步:將.h文件.dll文件.lib文件拷貝到同一個(gè)文件夾中。之后將這個(gè)文件夾就可以發(fā)送給任何人使用你編寫的函數(shù)了。
和配置一般使用庫的配置方法一樣(如opencv),這里不做詳細(xì)介紹,直接貼圖; 第一步:新建工程,準(zhǔn)備調(diào)用上面生成的dll文件
第二步:配置環(huán)境時(shí),將vc++目錄的包含目錄,庫目錄分別包含上面生成的文件夾(.h,.dll,.lib)
第三步:連接器中加入lib文件 
下面就可以自由的使用dll文件中的任何函數(shù)了。
由于很多時(shí)候我們沒有l(wèi)ib文件和h文件,這時(shí)候上述方法就不能使用了,但是我們可以使用以下方式。
#include<iostream>#include<Windows.h>#include<time.h>typedef int(*Dllfun)(int *, int);using namespace std;int main(){ Dllfun maopao1; HINSTANCE hdll; hdll = LoadLibrary("E://matthewCode//C&C++//DLLtest//DLLtest//Debug//dllOnlytest.dll"); if (hdll == NULL) { FreeLibrary(hdll); } maopao1 = (Dllfun)GetProcAddress(hdll, "maopao"); if (maopao1 == NULL) { FreeLibrary(hdll); } int a[10]; srand(time(0)); for (int i = 0; i<10; i++) a[i] = rand() % 50; maopao1(a, 10); for (int i = 0; i<10; i++) cout << a[i] << endl; FreeLibrary(hdll);}有時(shí)候我們調(diào)用的dll文件同時(shí)也調(diào)用了其他的dll文件,這時(shí)候我們還能順利的調(diào)用這個(gè)dll文件嗎?答案是肯定的。下面我們創(chuàng)建一個(gè)dll_1實(shí)現(xiàn)一個(gè)加法函數(shù),在dll_2中我們調(diào)用dll_1中的加法函數(shù),并產(chǎn)生一個(gè)新的乘法函數(shù)。上述兩個(gè)過程都同第一小節(jié)的步驟得到dll文件,lib文件,h文件。
//dll_1int Add(int a, int b){ return a + b;}
同樣的,我們心間一個(gè)工程3,分別調(diào)用dll_1,和dll_2的函數(shù),環(huán)境的配置在這里省略不寫(dll_1和dll_2的lib,h,dll文件都需要配置)。 工程3的代碼如下:
輸入1,2返回值都是3說明所有dll的調(diào)用都測(cè)試通過。 
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注