빠른 포장 DLL
1617 단어 dll
구성 등록 정보 일반에서 구성 유형을 동적 라이브러리(.dll)로 설정합니다.
내보내기 함수 정의가 포함된 헤더 파일에 다음과 같은 매크로 정의를 추가합니다.
#ifdef DLL_EXPORTS
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif
내보내려는 모든 함수에 대해 함수 A, B, C 등이라고 해도 무방하다. 이를 다음과 같이 쓸 수 있다.
extern “C”{
DLL_API int _cdecl A( int x, int y );
DLL_API char _cdecl B( const char * a, int l );
DLL_API bool _cdecl C( float m, float n );
}
이에 따라 이 함수들은 머리도 같은 위치
DLL_API
와 _cdecl
(현재 이 호출 프로토콜만 사용하고 있음)을 더해야 하지만 더하지 않아도 된다extern "C"
.C/C++ 프리 프로세서에 프리 프로세서 정의
DLL_EXPORTS
를 추가하면 전체 프로젝트의 모든 파일 시작 부분에 다음과 같습니다. #define DLL_EXPORTS
이렇게 하면
DLL_API
여기 함수가 내보내기인지 가져오는지 제어할 수 있습니다.컴파일링 기간에 DLL_EXPORTS
가 정의되어 함수가 내보내집니다.링크가 필요할 때 함수도 가져올 수 있습니다.DLL은 원래 함수를 내보내기 위해 설계된 것일 뿐인데 DLL이 등장한 후에야 C++의 대상을 대상으로 하기 때문에 DLL 내보내기 클래스가 좀 불편하다.여기에는 클래스의 함수를 사용하는 상황만 언급합니다.
내보낼 클래스마다 구조를 조금씩 바꿔야 합니다.우리는 특별히 부류를 구성하여 도출류를 계승할 수 있으며, 도출해야 할 모든 함수는
virtual
라고 표시할 수 있다.부류는 반드시 허석 구조 함수가 있어야 하며, 구조 함수는 필요 없다.부류가 정의한 모든 허함수는 비어 있거나 적당한 무효값을 되돌려야 합니다.부류가 정의된 후에 함수를 내보냅니다. 그 반환 형식은 부류 실례의 바늘이지만 함수 내부에는 new의 내보내기 클래스가 반환 값으로 사용됩니다.또한 헤더 파일에서 내보낸 함수에 함수 바늘을 제공하여 호출자가 사용할 수 있도록 합니다.
나는 이런 허함수 방법의 원리를 대충 찾아봤는데 허함수와 정적 변수는 초기화할 때 클래스가 있는 메모리 공간에 직접 넣을 수 있기 때문에 호출될 수 있는 것 같다.
현식 호출을 할 때, 앞에 생성된 동적 링크 라이브러리와 같은 헤더 파일만 사용하면 된다.
원문은 블로거가 일선시공 BBS에 발표했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
LoadLibrary에서 126 오류가 발생하면 원인이되는 파일 이름을 찾는 방법Loadlibrary에서 DLL을 동적으로 로드할 때 로드 실패입니다. 실패한 파일 이름은 알려주지 않습니다. 로드하고자 하는 DLL 자체를 로드할 수 없다면 이야기는 간단하지만, 대상 DLL이 다른 DLL을 로드하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.