2010-04-16 3 views
0

재배포 할 수있는 Win32 DLL 라이브러리를 작성 중입니다. Windows 7 기능을 지원하기를 원하기 때문에 Windows API의 다른 버전을 사용하고 있지만 Windows 2000 (지원되지 않는 일부 기능 포함)을 계속 지원합니다. 현재 MyLib2000.dll, MyLibXP.dll 및 MyLibVista.dll이 있으며, 응용 프로그램은 런타임에로드 할 라이브러리를 선택합니다. 다른 DLL 자체를 저장하는 단일 DLL (MyLib.dll)을 가지고 있고로드 될 때 올바른 DLL을 추출하여로드합니다.하나의 DLL 라이브러리를 사용하여 런타임에 다른 라이브러리 가져 오기

이것이 최선의 방법이 아니라는 것을 알고 있습니다. 그러기 위해 다른 방법을 제안해도 좋습니다.

답변

1

지연로드를 사용하고 DLL의 올바른 버전을로드하려면 dliNotePreLoadLibrary 알림 후크를 구현하십시오. 링커가 제공하는 지연로드 로직은 사용자가로드 한 DLL로부터 모든 함수를 가져옵니다.

http://msdn.microsoft.com/en-us/library/z9h1h6ty(v=VS.100).aspx

또는 사용 지연 로딩하고 (그 이전 OS에 존재하지 않기 때문에)로드 할 실패 할 수있는 함수를 호출하기 전에 OS 버전을 확인하기 위해 기능을 구현한다.

+0

내 문제의 해결책처럼 보입니다. 살펴보기로하겠다.하지만 샘플 코드를 볼 수 있다면 좋을 것 같다. – Yifan

+0

이것은 찾고있는 샘플 유형 일 수 있습니다. http://www.codeproject.com/KB/DLL/delayloaddll.aspx –

관련 문제