본문 바로가기

DLL3

DLL Hell(DLL 지옥) DLL 지옥(영어: DLL hell)은 마이크로소프트 윈도 기반의 프로그램에서 DLL을 사용할 경우 발생할 수 있는 복잡성을 뜻하는 말이다. 이 용어는 릭 엔더슨(Rick Anderson)이 2000년 1월에 발표한 〈DLL 지옥의 종말(The End of DLL Hell)〉 이라는 문서를 통해 대중에 소개되었다. 그 전에는 잠시 동안 마이크로소프트 내부에서 사용됐었다.DLL 지옥은 DLL을 관리할 때 발생할 수 있는 모든 문제를 뜻한다. 여기에는 DLL 버전 충돌 문제, 프로그램이 의존하는 DLL 파일을 찾을 때의 어려움, 불필요한 DLL 파일 복사본이 만들어지는 문제 등이 포함된다.DLL 지옥은 잠재적인 운영 체제 설계 결함의 한 예이다. 이 결함으로 인해 잘 작성된 프로그램도 문제를 일으킬 수 있는.. 2008. 7. 8.
DLL 종류 및 링크방법 DLL 종류 1. 정규 DLL 정규 DLL 이란 Win32 프로그래밍 환경으로 설정된다는 것입니다. 즉 함수를 호출 할 때 클래스 형태의 함수를 호출하는 것이 아니고 C 함수 형태로 호출할 수 있는 것입니다. 정규 DLL은 MFC를 사용하지 않는 다른 프로그램과도 원활하게 연결될 수 있는 DLL 이라고 보면 됩니다. Win32 SDK의 DLL 구조를 그대로 사용하기 때문입니다. 그러나 내부적으로는 클래스를 사용할 수 있습니다. 정규 DLL은 MFC 라이브러리를 사용할 경우, 공유하거나 자체적으로 가지고 있거나 둘중 하나를 선택할 수 있습니다. - Regular DLL with MFC statically linked MFC 라이브러리를 LIB 형태로 링크하여 DLL을 만드는 것 - Regular DLL u.. 2008. 6. 20.
DLL용 함수 선언 __declspec(속성) 선언 이 키워드는 Microsoft의 Visual C++에서 함수나 변수의 선언에 별도의 정보를 제공하기 위해 사용하는 것이다. 다음과 같은 속성이 사용될 수 있다. thread: Thread Local Storage 데이터를 말하며, 이 지정자가 붙은 함수는 해당 스레드에서만 사용할 수 있다. naked: 함수에서 접두어 접미어를 생성하지 않는다. dllimport: DLL에 있는 데이터, 오브젝트, 함수를 임포트 한다. dllexport: DLL에 있는 데이터, 오브젝트, 함수를 익스포트 한다. 함수를 선언할 때 dllexport로 선언하면, DEF 파일의 Exports란에 이 함수를 명시하지 않아도 되며, __export 키워드를 대신한다. extern "C" C++로 작.. 2008. 6. 19.