2010-01-30 8 views
6

필자는 Dependancy Walker (그리고 필자가 시도한 다른 모든 유틸리티)가 이름이나 서수에 의한 수출이 0인데도 파일 크기가 약 4MB 인 내 시스템에 설치된 DLL을 최근에 만났습니다. DLL의 유일한 목적은 다른 코드에서 사용하기 위해 함수를 내보내는 것이 었으므로 수출이없는 DLL의 목적은 무엇일까?DLL의 내보내기가없는 방법은 무엇입니까?

답변

4

DLL을 생각하는 한 가지 방법은 함수의 컨테이너입니다. DLL에서 함수를 내 보내면 DLL 외부의 호출자가 해당 함수를 볼 수 있습니다. DLL에서 함수를 내보내는 것이 아마도 액세스를 제공하는 가장 일반적인 방법 일 수 있지만, 많은 플랫폼은 .NET Framework 및 Java에서의 리플렉션과 같은 내 보내지 않은 함수에 액세스하는 다른 방법을 제공합니다. LoadLibtary/GetProcAddress in 그 기능을 외부 응용 프로그램

+0

아, 그 말이 맞습니다. 필자가 작성한 경우 내보내기 테이블을 통하지 않고 DLL을 사용하는 방법이 있다는 것을 깨닫지 못했습니다. –

3

리소스 전용 DLL에서 호출하는 라이브러리 함수를 가지고 개발자에게 유용하지만, 바람직하지 않은 때문에 Win32에서

이 작업을 수행하는

이유는 다양 종종는, 어쩌면? 그것들은 예를 들어, 지역화 목적으로 꽤 자주 사용됩니다.

EDIT : DllMain()에서 기능을 사용할 수 있도록 해주는 코드로 DLL을 가질 수도 있습니다. DLL은 예를 들어 일부 전역 디스패처에 등록하거나 이름이 지정된 커널 객체를 만들 수 있습니다.

관련 문제