웹을 검색했지만 쿼리와 다른 답변으로 검색했습니다. 나는 Windows 전문가가 아니지만 정확히 이해하고 싶습니다.Windows 응용 프로그램은 컴파일 타임에 DLL에 대해 알아야합니까?
핵심 라이브러리 kernel32.dll 또는 다른 사용자가 만든 dll을 사용하는 것과 같이 라이브러리 (DLL)의 런타임 연결에 대한 필요성을 포함하는 응용 프로그램을 Windows 용으로 컴파일하면 응용 프로그램에서 dll은 런타임 전에 존재합니다.
나는 dll에 .lib 파일이 있어야한다는 것을 읽었습니다.이 파일은 컴파일시에 링크되어야하지만 .lib 파일이 필요 없다고 명시되어 있습니다.
응용 프로그램이 실행되고 dll에 필요한 기능을 찾지 못하면 그냥 실패합니까?
미리 감사드립니다.
예. DLL을 찾고 함수를 바인드하는 것은 OS 로더의 작업입니다. 기술적으로 LoadLibrary + GetProcAddress를 사용하여 프로그램 자체에서 동적으로 수행 할 수 있습니다. COM은 주목할 만하다. 하나의 수출 된 함수, 클래스 팩토리 만 필요하다. –
다른 답변을 보는 이유는 컨텍스트에 따라 다릅니다. 무슨 일이 있어도 LoadLibrary와 GetProcAddress를 가져 오기 때문에'kernel32.lib'이 필요합니다. [Nitpicks 코너 : 기술적으로 다른 방법이 있지만 OP와 관련이 없습니다.] 일반적으로 다른 DLL에서도'.lib' 파일을 사용합니다. 그러나 당신은 그들없이 할 수 있습니다. 그리고 당신이 미리 알 수없는 DLL 이름, 예를 들어 플러그인을로드해야한다면, 플러그인을 사용할 수 있습니다. –