C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[4708] Re:[질문]DLL에 관해서 ...
한꼬맹이 [] 3154 읽음    2000-12-30 00:00
황진이 님이 쓰신 글 :
:
: 날씨가 춥군요
: 안녕하시죠 님들 ~~
:
: 감기 조심 하시구요 , 저 질문 있거든요
:
: 메인에서 dll을 불러요 -> dll에서 작업을 마치면 dll은 사라지는게 기본 구돈데요
:
: 문제는 그 dll을 버전 업해서 실시간으로 버전 업된 dll을 불러 쓰고 싶다는 말인데요

:
: 방법이 않보이네요
:
: CrateProcess()을 쓰기 전에 파일을 지우고 다시 그 이름과 동일한 다른 DLL로 덮어쓸려구 하는데
:
: 메인이 실행되지 않는 상태에서는 덮어쓰기가 되는데
:
: 메인이 실행중에는 DLL이 버전 업이 되지가 않습니다(DLL을 지운 시점에서도
:
: 요, 메인은 실행중이지만 사용한 DLL은 지운 다음인데도 다른 DLL로 덮어쓰기가 않됩니다)
:
: 메인이 실행 중이라서 그런것 같다구 생각은 드는데 정말 방법이 없을까 해서
:
: 질문 올려 봅니다 ,않되는 것인지 아님 제가 실력이 모자라서 그런건지 답변 부탁 해요
:
: 답변좀 부탁 드립니다 

안녕하십니까?

한꼬맹이 입니다.

당연히 DLL을 호출하는 프로그램이 있으면 삭제와 같은 쓰기가 금지되어 있습니다.

일종의 공유위반 이라고 볼수있죠...

다시말해 DLL이 프로그램에 로드되어 있을때 절대로 쓰기가 안됩니다.

그렇다면 로드한 DLL을 메모리에서 해제해주고 지우면 되지않겠습니까?

황진이님이 DLL을 임포팅 하실때 어떤방식으로 하셨는지는 모르겠지만

일반적으로 정적로딩을 많이 쓰지요. 그냥 사용하기 간단하고 프로그램이 종료할때

까지 메로리에 남아 있죠..

그리고 또 한가지 동적로딩이 있습니다. API코딩을 좀 하셔야 하기 때문에

약간 어렵지만 DLL이 필요없을때 메모리에서 즉각 해제할수 있으므로

많은 융통성을 가지고 있습니다.

이중에서 반드시 동적로딩을 사용하세요...

DLL파일을 업그레이드 할때 메모리에 올려진 DLL을 해제시켜주고

지우거나 오버와이팅로 DLL파일을 업그레이드 해주시면 되겠네요...

그리고 다시 DLL을 사용하시려면 동적로딩으로 해주시면 됩니다.

그럼 도움되시길...



+ -

관련 글 리스트
4702 [질문]DLL에 관해서 ... 황진이 2836 2000/12/29
4712     Re:[질문]DLL에 관해서 ... 박지훈.임프 3054 2000/12/30
4708     Re:[질문]DLL에 관해서 ... 한꼬맹이 3154 2000/12/30
4713         Re:Re:[질문]DLL에 관해서 ... 황진이 2928 2000/12/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.