문제

Visual C ++ 2008 Express Edition 사용. 내 응용 프로그램을 가져 오기 라이브러리와 연결하고 있습니다..lib) 대상 시스템에 존재하거나 존재하지 않을 수도있는 DLL의 경우. 당신이 물어보기 전에 : 나는 내 신청서와 함께 DLL을 배포 할 수 없습니다.

DLL이 없으면 DLL에서 함수를 호출하자마자 (그러나 더 빨리!)

Somelibrary.dll이 발견되지 않았기 때문에이 응용 프로그램이 시작되지 않았습니다. 응용 프로그램을 다시 설치하면이 문제가 해결 될 수 있습니다.

내가 대신하고 싶은 것은 응용 프로그램이 DLL이 없음을 감지하고 단순히 그 기능에 의존하는 기능을 비활성화한다는 것입니다. 나는 전화를 걸 수있다 LoadLibrary 그리고 그것이 성공했는지 확인하지만 이것이 충분한 지 확실하지 않습니다. 수입 도서관이 무대 뒤에서 더 많은 일을할까요?

간단합니다 LoadLibrary 충분한 전화? 그렇지 않다면, 또 무엇을해야합니까? 이 작업을 수행 할 수 있습니까?

업데이트: 물론 사용할 수 있습니다 LoadLibrary, 그리고 GetProcAddress 내가 사용하고 싶은 각 기능에 대해. 그러나 그것은 번거 로움이며, 나는 그것을 피하고 단순히 제공된 가져 오기 라이브러리를 대신 사용하기를 바랐습니다.

도움이 되었습니까?

해결책

이것이 Delayload Linker 옵션의 경우이지만 Express Edition이 지원하는지 여부는 모르겠습니다.

다른 팁

아니, LoadLibrary() 정확히 당신이 원하는 것입니다. 그것을 사용하는 유일한 결과는 DLL을 성공적으로로드 할 때 함수 포인터를 DLL에 설정하는 번거 로움이지만 그 과정은 그물의 다른 곳에 잘 덮여 있습니다.

확인하면 확인하십시오 여기 (msdn) 당신은 언제 볼 수 있습니다 LoadLibrary 로드에 실패하고 함수는 NULL 값을 반환하며 사용하여 특정 오류 (파일이 없어야 함)를 확인할 수도 있습니다. GetLastError 기능.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top