드디어 진백님의 강좌가 나와서 기대되네요!
그런데 제가 생각하기에 맞지 않는 것 하나가 있는 것 같아서, 지적할까 합니다 -_-;;
별 것은 아니고, 2번 말인데요. 정적 연결과 동적 연결... 창조는 정적 연결인 것 같지가 않아서요 ^^;
정적 연결(이른 바인딩이라고도...)은, Windows의 실행 파일 실행기가 실행 파일을 실행하면서(?) 그 파일에 기록된대로 미리 DLL을 로드하고, DLL 함수를 구해다가 마치 실행 파일과 한 몸처럼 만들어두는 것이 정적 연결입니다.
동적 연결(늦은 바인딩!)은 앞서 말한 작업은 Windows가 하는 게 아니고 프로그램이 스스로 하는 것이죠.
자, 그럼 제가 창조가 동적 연결이라고 생각되는 여러가지 이유를 적어볼테니, 다시 한번 생각해 보시길 바랍니다 -_-;
1. DLL 파일이 없을 때의 동작 정적 연결: Windows가 실행하려다가 DLL이 없음을 깨닫고 무조건 “없어 임마!” 를 외치고는 프로그램이 뻗습니다. 동적 연결: 프로그램이 DLL을 찾아보곤, 없다는 것을 깨닫고 그냥 DLL을 포기합니다. 적어도 원하는 대로 오류 메시지는 내줄 수 있습니다. 또 그 DLL이 필요 없으면 그냥 안씁니다.
2. DLL 파일 이름 정적 연결: 실행 파일에 박혀 있기 때문에, 죽었다 깨나도 바뀔 수 없습니다. 동적 연결: 프로그램이 DLL을 로드하려다가 갑자기 변심해서 이름을 바꿔 로드할 수 있습니다.
3. DLL 연결 여부(?) 정적 연결: 프로그램의 시작과 함께 DLL이 로드되며, 프로그램이 꺼지지 전 까지 DLL이 유지됩니다. 너와 나는 한 몸! 동적 연결: 프로그램 실행중에 더이상 DLL이 필요 없으면 매정하게 버릴 수 있습니다.
대충 이 정도가 되네요... -_-; 이제 창조에서 DLL 함수를 쓸 때 정적 연결로는 설명되지 않는 몇 가지 사실을 발견하셨을 겁니다 -_-;
중간고사 기간인데 스스로도 뭐하나 싶지만-_-; 그래도 저는 진실(?)을 좋아하기 때문에 못참고 적어봅니다-
p.s 그나저나 DLL 파일의 정의, 네이버 사전에서 찾으셨나요? Dynamic Linked Library 라고 하는 사람도 있고, Dynamically Linked Library 라고 하는 사람도 있는데 뭐가 맞는 건지 영 모르겠군요 -_-; |
|