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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
콜백 함수를 Angular 하위 구성 요소에 전달이 예제는 구성 요소에 함수를 전달하는 것과 관련하여 최근에 직면한 문제를 다룰 것입니다. 국가 목록을 제공하는 콤보 상자 또는 테이블 구성 요소. 지금까지 모든 것이 구성 요소 자체에 캡슐화되었으며 백엔드에 대한 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.