观看麻豆影视文化有限公司-国产 高清 在线-国产 日韩 欧美 亚洲-国产 日韩 欧美 综合-日日夜夜免费精品视频-日日夜夜噜

windows運行庫合集(win10必備運行庫)

  • 生活
  • 2023-04-26 17:10

多條告白如次劇本只需引入一次

Windows運用步調進口因變量

GUI(GraphicalUserInterface)運用,鏈接器選項:/SUBSYSTEM:WINDOWS

CUI(ConsoleUserInterface)運用,鏈接器選項:/SUBSYSTEM:CONSOLE

_tWinMain與_tmain因變量證明

IntWINAPI_tWinMain(HINSTANCEhInstanceExe,HINSTANCE,PTSTRpszCmdLine,intnCmdShow);int_tmain(intargc,TCHAR*argv[],TCHAR*envp[]);Windows的動靜鏈接庫(Dynamic-LinkLibrary)

局部常識點來自《Windows中心編制程序(第六版)》

用途

(1)擴充了運用步調的個性

(2)簡化了名目處置

(3)無助于于儉樸外存

(4)激動了資源的共享

(5)激動了當地化

(6)無助于于處置平臺間的分別

(7)不妨用來特出手段

提防

(1)創造DLL,究竟上是在創造可供一個可實行模塊挪用的因變量

(2)當一個模塊供給一個外存調配因變量(malloc、new)的功夫,它必需同聲供給另一個外存開釋因變量(free、delete)

(3)在運用C和C++混編的功夫,要運用extern“C”化裝符

(4)一個DLL不妨導出因變量、變量(制止導出)、C++類(導出導出須要同編寫翻譯器,要不制止導出)

(5)DLL模塊:cpp文獻中的__declspec(dllexport)寫在include頭文獻之前

(6)挪用DLL的可實行模塊:cpp文獻的__declspec(dllimport)之前不該當設置MYLIBAPI

加載Windows步調的探求程序

1、包括可實行文獻的目次

2、Windows的體例目次,不妨經過GetSystemDirectory獲得

3、16位的體例目次,即Windows目次中的System子目次

4、Windows目次,不妨經過GetWindowsDirectory獲得

5、過程的暫時目次

6、PATH情況變量中所列出的目次

DLL進口因變量

DllMain因變量

BOOLWINAPIDllMain(HINSTANCEhinstDLL,DWORDfdwReason,LPVOIDlpvReserved){switch(fdwReason){caseDLL_PROCESS_ATTACH://第一次將一個DLL映照到過程地方空間時挪用//TheDLLisbeingmappedintotheprocess'addressspace.break;caseDLL_THREAD_ATTACH://當過程創造一個線程的功夫,用來報告DLL實行與線程關系的初始化(非干線程實行)//Athreadisbingcreated.break;caseDLL_THREAD_DETACH://體例挪用ExitThread線程退出前,行將中斷的線程經過報告DLL實行與線程關系的整理//Athreadisexitingcleanly.break;caseDLL_PROCESS_DETACH://將一個DLL從過程的地方空間時挪用//TheDLLisbeingunmappedfromtheprocess'addressspace.break;}return(TRUE);//UsedonlyforDLL_PROCESS_ATTACH}載入卸載庫

LoadLibrary、LoadLibraryExA、LoadPackagedLibrary、FreeLibrary、FreeLibraryAndExitThread因變量證明

//載入庫HMODULEWINAPILoadLibrary(_In_LPCTSTRlpFileName);HMODULELoadLibraryExA(LPCSTRlpLibFileName,HANDLEhFile,DWORDdwFlags);//若要在通用Windows平臺(UWP)運用中加載Win32DLL,須要挪用LoadPackagedLibrary,而不是LoadLibrary或LoadLibraryExHMODULELoadPackagedLibrary(LPCWSTRlpwLibFileName,DWORDReserved);//卸載庫BOOLWINAPIFreeLibrary(_In_HMODULEhModule);//卸載庫和退出線程VOIDWINAPIFreeLibraryAndExitThread(_In_HMODULEhModule,_In_DWORDdwExitCode);表露地鏈接到導出標記

GetProcAddress因變量證明

FARPROCGetProcAddress(HMODULEhInstDll,PCSTRpszSymbolName//只能接收ANSI字符串,不許是Unicode);DumpBin.exe察看DLL消息

在VS的開拓職員吩咐提醒符運用DumpBin.exe可察看DLL庫的導出段(導出的變量、因變量、類名的標記)、對立假造地方(RVA,relativevirtualaddress)。如:

LoadLibrary與FreeLibrary過程圖

LoadLibrary與FreeLibrary過程圖

LoadLibrary

FreeLibrary

DLL庫的編寫(導出一個DLL模塊)

DLL庫的編寫(導出一個DLL模塊)DLL頭文獻

//MyLib.h#ifdefMYLIBAPI//MYLIBAPI該當在十足DLL源文獻的include"Mylib.h"之前被設置//十足因變量/變量正在被導出#else//這個兒文獻被一個exe源代碼模塊包括,表示著十足因變量/變量被導出#defineMYLIBAPIextern"C"__declspec(dllimport)#endif//這邊設置任何的數據構造和標記//設置導出的變量(制止導出變量)MYLIBAPIintg_nResult;//設置導出因變量原形MYLIBAPIintAdd(intnLeft,intnRight);DLL源文獻

//MyLibFile1.cpp//包括規范Windows和C運轉時頭文獻#include<windows.h>//DLL源碼文獻導出的因變量和變量#defineMYLIBAPIextern"C"__declspec(dllexport)//包括導出的數據構造、標記、因變量、變量#include"MyLib.h"http://將此DLL源代碼文獻的代碼放在此處intg_nResult;intAdd(intnLeft,intnRight){g_nResult=nLeft+nRight;returng_nResult;}DLL庫的運用(運轉時動靜鏈接DLL)

DLL庫的運用(運轉時動靜鏈接DLL)

//AsimpleprogramthatusesLoadLibraryand//GetProcAddresstoaccessmyPutsfromMyputs.dll.#include<windows.h>#include<stdio.h>typedefint(__cdecl*MYPROC)(LPWSTR);intmain(void){HINSTANCEhinstLib;MYPROCProcAdd;BOOLfFreeResult,fRunTimeLinkSuccess=FALSE;//GetahandletotheDLLmodule.hinstLib=LoadLibrary(TEXT("MyPuts.dll"));//Ifthehandleisvalid,trytogetthefunctionaddress.if(hinstLib!=NULL){ProcAdd=(MYPROC)GetProcAddress(hinstLib,"myPuts");//Ifthefunctionaddressisvalid,callthefunction.if(NULL!=ProcAdd){fRunTimeLinkSuccess=TRUE;(ProcAdd)(L"MessagesenttotheDLLfunctionn");}//FreetheDLLmodule.fFreeResult=FreeLibrary(hinstLib);}//IfunabletocalltheDLLfunction,useanalternative.if(!fRunTimeLinkSuccess)printf("Messageprintedfromexecutablen");return0;}運轉庫(RuntimeLibrary)

典范步調運轉辦法

(1)操縱體例創造過程,把遏制權交給步調的進口(常常是運轉庫中的某個進口因變量)

(2)進口因變量對運轉庫和步調運轉情況舉行初始化(囊括堆、I/O、線程、全部變量結構之類)。

(3)進口因變量初始化后,挪用main因變量,正式發端執路途序主體局部。

(4)main因變量實行結束后,歸來到進口因變量舉行整理處事(囊括全部變量析構、堆廢棄、封閉I/O等),而后舉行體例挪用中斷過程。

一個步調的I/O指代步調與外界的交互,囊括文獻、管程、搜集、吩咐行、旗號等。更廣義地講,I/O指代操縱體例領會為“文獻”的實物。

glibc進口

_start->__libc_start_main->exit->_exit

個中main(argc,argv,__environ)因變量在__libc_start_main里實行。

MSVCCRT進口

intmainCRTStartup(void)

實行如次操縱:

(1)初始化和OS本子相關的全部變量。

(2)初始化堆。

(3)初始化I/O。

(4)獲得吩咐行參數和情況變量。

(5)初始化C庫的少許數據。

(6)挪用main并記載歸來值。

(7)查看缺點并將main的歸來值歸來。

C談話運轉庫(CRT)

大概包括如次功效:

啟用與退出:囊括進口因變量及進口因變量所依附的其余因變量等。

規范因變量:有C談話規范規則的C談話規范庫所具有的因變量實行。

I/O:I/O功效的封裝和實行。

堆:堆的封裝和實行。

談話實行:談話中少許特出功效的實行。

調節和測試:實行調節和測試功效的代碼。

C談話規范庫(ANSIC)

包括:

規范輸出輸入(stdio.h)

文獻操縱(stdio.h)

字符操縱(ctype.h)

字符串操縱(string.h)

數學因變量(math.h)

資源處置(stdlib.h)

***變換(stdlib.h)

功夫/日子(time.h)

預言(assert.h)

百般典型上的常數(limits.h&float.h)

變長參數(stdarg.h)

非限制跳轉(setjmp.h)

猜你喜歡

主站蜘蛛池模板: 亚洲午夜久久 | 久久高清一级毛片 | avtom影院入口永久在线观看 | 欧美a一片xxxx片 | 99久久国产免费中文无字幕 | 高清色黄毛片一级毛片 | 亚洲欧洲一区二区三区在线 | 男人女人做刺激视频免费 | 黄色网址www | 国产成人综合久久精品红 | 亚洲国产精品第一区二区 | 国产精品情人露脸在线观看 | 日韩在线第一区 | 国产成人99精品免费观看 | 农村寡妇偷毛片一级 | 那里有黄色网址 | 亚洲国产一区二区在线 | 狠狠做久久深爱婷婷97动漫 | 国产亚洲精品看片在线观看 | 一区二区三区在线视频观看 | 国产精品自在自线 | 国产精品区一区二区免费 | 2345成人高清毛片 | 三级网址在线 | 日韩免费三级 | 偷自拍 | 中文字幕日韩精品有码视频 | 久久国产精品岛国搬运工 | 国产亚洲精品国产一区 | 欧美特黄一级aa毛片 | 国产xh98hx在线观看 | 成人精品视频在线观看播放 | 黄色一级毛片 | 成人做爰视频www视频 | 日韩美女免费线视频 | 亚洲高清视频在线观看 | 国产成人久久综合二区 | 性欧美videos俄罗斯 | 欧美黄色高清 | 欧美一区精品二区三区 | 欧美另类精品一区二区三区 |