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
[22038] Re:[질문(도와주세요)]DLL관련 예제를 공부하는중에 링커에러가 자꾸나네요.. 부디.. 가르침을..
하느리 [handebug] 1178 읽음    2002-10-14 18:39
dll을 이용하는 것은 시스템 리소스를 보다 원할하게 사용하고자 할 때, 타 프로그램과 동일한 자료를 공유하고자 할 때, 혹은 해당되는 기능을 구현하기 위해 어쩔 수 없이 사용하게 되는데요.
dll을 내 프로그램에 연결시키는 방법은 두가지가 있습니다.

1. 정적링크
현재 만들고 계신 방법이 이 방법에 해당합니다. 정적링크는 프로그램이 실행될 때 함께 메모리상에 로드되어 사용되고, 프로그램이 죽으면 함께 메모리상에서 내려집니다(제거됩니다). 이 방법의 장점은 소스코딩이 간단하다는 것. 하지만 dll 내에 export되어진 함수나 자료를 사용하지 않을 때도 계속적으로 메모리 상에 상주하기 때문에 자원의 낭비가 좀 있습니다.
만드는 방법은,
dll 소스
a.c------------------------------------
리턴타입 CALLBACK 함수명 (파라미터인자)
{
    함수내용
}
a.h------------------------------------
리턴타입 __import 함수명 (파라미터인자);

그리고 실행프로그램쪽에서
프로젝트 내에 lib를 첨가하고, dll 내의 자원을 사용하는 곳에 a.h를 포함시킵니다.
이러면 무난히 처리될 것입니다.

2. 동적링크
동적링크는 프로그램을 실행할 때, dll이 함께 메모리상에 로드되는 것이 아니라 LoadLibrary라는 함수를 사용하여 프로그램 내에 필요한 곳에서 코딩하여 호출하는 방식입니다. 이렇게 할 경우, 정적링크와 반대로, 코딩은 복잡해지지만, 실제 사용시 메모리 사용효율이 높습니다.
만드는 방법은,
dll 소스
a.c------------------------------------
extern "C" __export __stdcall 리턴타입 함수명 (파라미터인자)
{
    함수내용
}

실행프로그램쪽-------------------------
1. dll load
리턴타입 (__stdcall *함수명) (파라미터인자);
HANDLE dll = LoadLibrary ("dll명.dll");
함수명 = (리턴타입 (__stdcall*)(파라미터인자)) GetProcAddress (dll, "함수명");
이렇게 하신 후, 함수명이 NULL이 아니면 함수를 호출하여 사용하시면 됩니다.
2. dll unload
FreeLibrary (dll);

이렇게 하시면 동적링크가 됩니다.


제가 너무 대충대충 설명해서 좀 그런데, 혹 이해 않되시는 부분이 있으면 리플 달아 주세요.








초식수련자 님이 쓰신 글 :
: DLL 을 만든후에 새로운 프로그램으로 DLL 파일의 헤더파일을 인클루드하는 방법으로
:
: 프로그램을 만들었는데요..
:
: 프로젝트파일소스코드에
: USERES("**.res");
: USEFORM("Unit1.cpp",Form1);
: USELIB("**Dll.Lib");
: 의 내용을 덧붙이고
:
: Unit1.cpp 에 DLL의 헤더파일을 인클루드시킨후
: 버튼으로 DLL 의 함수를 호출해서 컴파일시켰는데 항상.. 계속...
:
: [Linker Error]Unresolved external '함수명' referenced From C:\..\UNIT1.obj
:
: 이라는 에러가 자꾸 나는군요.. 도무지 알길이 없어 이렇게 글을 올립니다.
:
: 부탁드립니다.

+ -

관련 글 리스트
22032 [질문(도와주세요)]DLL관련 예제를 공부하는중에 링커에러가 자꾸나네요.. 부디.. 가르침을.. 초식수련자 817 2002/10/14
30922     Re:[질문(도와주세요)]DLL관련 예제를 공부하는중에 링커에러가 자꾸나네요.. 부디.. 가르침을.. 하느리 721 2002/10/14
30921     Re:[질문(도와주세요)]DLL관련 예제를 공부하는중에 링커에러가 자꾸나네요.. 부디.. 가르침을.. 초식수련자 752 2002/10/14
30920     Re:[질문(도와주세요)]DLL관련 예제를 공부하는중에 링커에러가 자꾸나네요.. 부디.. 가르침을.. 초식수련자 697 2002/10/14
30919     Re:[질문(도와주세요)]DLL관련 예제를 공부하는중에 링커에러가 자꾸나네요.. 부디.. 가르침을.. 임양규 865 2002/10/14
30918     Re:[질문(도와주세요)]DLL관련 예제를 공부하는중에 링커에러가 자꾸나네요.. 부디.. 가르침을.. 임양규 732 2002/10/14
22038     Re:[질문(도와주세요)]DLL관련 예제를 공부하는중에 링커에러가 자꾸나네요.. 부디.. 가르침을.. 하느리 1178 2002/10/14
22048         Re:Re:정말 감사합니다. 많은 도움이 되었습니다. 초식수련자 792 2002/10/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.