DLL 요약

DLL 생성
vs 새 프로젝트, 스마트 장치 win32 프로젝트를 선택한 다음 dll을 선택하십시오.그리고 안에 dll의 입구 함수를 자동으로 생성하고 cpp에서 자신의 함수를 실현합니다.def 파일에서 자신의 함수 내보내기
 
예:

첫 번째, def 파일에 내보내기 함수를 추가합니다. xxx는 레지스트리에 지정된 접두사입니다.

    EXPORTS 
    ; Explicit exports can go here  
   xxx_Close 
    

두 번째 단계는 함수를 실현하는 것이다. xxx는 등록표에 지정된 접두사이다.

/***************************************************************************
*
* Function Name: DllMain
* Purpose: service entrance
* Input:
hinstDLL: Handle to the DLL.
dwReason: Specifies a flag indicating why the DLL entry-point function is being called.
lpvReserved: Specifies further aspects of DLL initialization and cleanup.
* Output:none
* Return:TRUE
***************************************************************************/
BOOL APIENTRY DllMain( HANDLE hinstDLL, DWORD  dwReason,  LPVOID lpvReserved)
{
switch( dwReason )
{
case DLL_PROCESS_ATTACH:
    g_hInst=(HINSTANCE)hinstDLL;
    break;
case DLL_PROCESS_DETACH:
{
    //..
    break;
}
}
return TRUE;
}
/***************************************************************************
*
* Function Name:xxx_Close
* Purpose: This function is implemented by a service and will be called by Services.exe.
* Input:
dwData:Specifies the value returned by xxx_Open (Services.exe) for the given service instance.
* Output:none
* Return:TRUE indicates success. FALSE indicates failure. * Remarks:This function is called when a service instance is closing during an application's call to CloseHandle.
***************************************************************************/
BOOL xxx_Close(DWORD dwData)
{    
    //..
    //return FALSE;
}

또는 프로젝트를 건설할 때 마지막 단계에서 실례를 내보내는 것을 선택하면 def 파일을 사용하지 않지만 extern "C"를 추가합니다.declspec(dllexport)
사실 우리는 볼 수 있다.h 파일에 이미 하나의 매크로 정의가 설치되어 있습니다. 우리는 실례에 따라 하기만 하면 됩니다. 사실 이것이 dll의 두 가지 방식입니다
DLL을 호출하려면 정적 및 동적 두 가지 방법이 있습니다.
(1).정적 호출 단계는 다음과 같습니다.
1. 너의 you App.DLL을 대상 프로젝트 (you App. DLL을 호출해야 하는 프로젝트) 의 Debug 디렉터리에 복사하기;
2. 너의 you App.lib을 대상 프로젝트 (you App.DLL을 호출해야 하는 프로젝트) 디렉터리에 복사하기;
3. 너의 you App.h (출력 함수 정의 포함) 대상 프로젝트에 복사 (you App.DLL을 호출해야 하는 프로젝트)
녹음하다
4. 목표 프로젝트 선택 프로젝트를 열고 Visual C++ 프로젝트 메인 메뉴의 Settings 메뉴를 선택하십시오.
5. 4단계를 수행하면 VC에서 여러 페이지 표시 컨트롤에서 Link 페이지를 선택하는 대화 상자가 나타납니다.물론
Object/library modules 입력 상자에 youApp. 를 입력합니다.lib
6. 목표 프로젝트 Head Files 선택: you App.h 파일
7. 마지막으로 목표 프로젝트(*.cpp, DLL의 함수를 호출해야 함)에 당신을 포함: #include "you App.h"
주: youApp은 당신의 DLL 프로젝트 이름입니다.
2. 동적 호출 프로그램은 다음과 같습니다.
동적 호출 시 정적 호출 절차만 1.
{
HINSTANCE hDllInst = LoadLibrary("youApp.DLL");
if(hDllInst)
{
typedef DWORD (WINAPI *MYFUNC)(DWORD,DWORD);
MYFUNC youFuntionNameAlias = NULL;//youFuntionNameAlias 함수 별칭
youFuntionNameAlias = (MYFUNC)GetProcAddress
(hDllInst,"youFuntionName");
//youFuntionName DLL에 선언된 함수 이름
if(youFuntionNameAlias)
{
youFuntionNameAlias(param1,param2);
}
FreeLibrary(hDllInst);
}
}
명시적(정적) 호출:
LIB + DLL + .H, 주의.H에서 dllexport를 dllimport로 변경
암시적(동적) 호출:
DLL + 함수 원형 성명, 먼저 LoadLibrary, GetProcAddress (즉 DLL에서 함수의 주소를 찾은 것), 나중에 FreeLibrary

좋은 웹페이지 즐겨찾기