mfc 확장 dll 예제

이 네 줄은 MFC 확장 DLL에 대해 코드가 올바르게 컴파일되도록 합니다. 이 네 줄을 제외하면 DLL이 컴파일되거나 잘못 링크될 수 있습니다. 확장 DLL에서 C++ 클래스를 내보내고 해당 클래스를 응용 프로그램으로 가져오는 것은 때때로 다소 혼란스러울 수 있습니다. 이 문서에서는 이를 단순화하는 여러 가지 방법 중 하나를 설명합니다. 또한 DLL의 을 확인하는 기술도 논의됩니다. LIB 파일은 DLL을 사용하여 모든 응용 프로그램(또는 다른 DLL)에 자동으로 연결되어 프로젝트 링크 설정을 변경할 필요가 없습니다. 에 추가. DLL 및 .lib 파일, 클라이언트 응용 프로그램에는 가져온 클래스, 함수, 개체 및 변수에 대한 헤더 파일이 필요합니다. 우리가 내보낼 때, 우리는 우리의 선언에 “__declspec (dllexport)”를 추가했습니다. 이제 가져올 때 “__declspec(dllimport)”을 추가합니다.

따라서 이전 예제에서 사용된 변수, 개체 및 함수를 가져오려면 헤더 파일에 다음이 포함됩니다. AFX_EXT_CLASS와 함께 해당 클래스를 내보내기만 하면 됩니다. 응용 프로그램과 DLL을 사용하여 처음부터 만들면 아마도 성공할 것입니다. 그러나 응용 프로그램과 DLL 모두에 더 많은 리소스를 삽입하면 몇 가지 심각한 버그가 나타납니다. 다음은 파일의 나머지 부분에서 MY_DLL_NAMEDLL의 발생을 찾아 확장DLL로 바꿉니다. 변수가 정적이기 때문에 이 파일에서만 발생이 발생할 수 있습니다. MFC 확장 DLL은 응용 프로그램이 MFC의 공유 DLL 버전을 사용하는 것과 동일한 방식으로 MFC의 공유 버전을 사용하며, 몇 가지 추가 고려 사항과 함께 MFC 확장 DLL이 CRuntimeClass를 내보내려는 경우 초기화 중에 CDynLinkLibrary 개체를 만듭니다. 개체 또는 리소스를 응용 프로그램에 적용합니다.

이와 같은 코드는 리소스 문자열을 디버그 창에 인쇄합니다. 때로는 잘못된 텍스트를 얻을 수 있으며 텍스트가 mfc 확장 dll (mfc-내선 dll)에있는 경우에만 발생합니다. 이 오류의 원인은 응용 프로그램이 리소스를 얻는 방식에 있습니다. 응용 프로그램과 dll 모두 리소스 파일을 가질 수 있기 때문에 다른 리소스에 대해 동일한 수 있습니다. (VC 리소스 편집기는 각 모듈에 대해 특정 값으로 아이디 번호 매기기 시작하기 때문에 매우 가능성이 높습니다.) 참고: MFC에 정적으로 연결된 응용 프로그램이 있고 확장에서 함수에 액세스할 수 있도록 수정하려는 경우. DLL, MFC에 동적으로 연결 하도록 응용 프로그램을 변경할 수 있습니다.