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
[64771] Re:Re:[질문]DLL 생성시..
unitas [kjlee1] 1726 읽음    2011-07-08 09:46
말씀하신대로 수정해서 해봤는데 역시 아래 부분에서 Error가 발생합니다.

hDll = LoadLibrary("C:\\TEMP\\DLL\\TestDll\\dll3.dll");  => 이부분에서 Error 나타납니다

Error 내용은 처음 질문시 첨부했던 Error와 같습니다. ( ~ EOutOfResources with message ~ )






aa 님이 쓰신 글 :
: unitas 님이 쓰신 글 :
: : DLL 을 처음 사용하게 되었는데 처음부터 쉽지가 않네요.
: : 이 게시판에 있는 예제를 가지고 만들어 봤습니다.
: :
: : Hellow 예제를 가지고 똑같이 만들어 보려고 했는데 잘 되지 않습니다.
: : 아무래도 DLL 생성에 문제가 있는것 같은데요.
: : DLL Wizard로 해서 BOX가 나타날때 C++,  Use VCL를 선택해서 했습니다.
: :
: : DLL Source는 아래처럼 게시판에 있는 예제와 똑같이 했습니다.
:
: #include 
: : #pragma hdrstop
: : 
: : extern "C" __export  void __stdcall SayHello()
: : {
: :     ShowMessage("Hello World !");
: : }
: : int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
: : {
: :     return 1;
: : }
: : 
: : Make를 하면 dll 파일크기가 574 kb 나옵니다.  다운받은 예제로 make 하면  크기가 468 kb 나옵니다.
: : 
: : dll를 호출하는 프로그램 소스는 아래와 같이 했습니다.
: : 그러면 첨부한 그림 Error 메세지가 나타납니다.
: : 
: : 다운받은 예제로 만든 dll를 호출하면 정상적으로 처리가 됩니다.
: : 
: : hDll = LoadLibrary("C:\\TEMP\\DLL\\TestDll\\DynamicHelloDll.dll"); => 로 하면 정상 처리 됩니다.
: : 
: : void __fastcall TForm1::Button1Click(TObject *Sender)
: : {
: :     Label1->Caption = "";
: :     
: :     HINSTANCE hDll;
: :     hDll = LoadLibrary("C:\\TEMP\\DLL\\TestDll\\dll3.dll");  => 이부분에서 Error 나타납니다.
: : 
: :     if(hDll==NULL)
: :     {
: :         ShowMessage("Can't load dll");
: :         return;
: :     }
: :     typedef __declspec(dllimport) void (*SayHello)(void);
: :     SayHello Test;
: : 
: :     Test = (SayHello)GetProcAddress(hDll,"SayHello");
: :     if(Test)
: :     {
: :         (*Test)();
: :     }
: :     FreeLibrary(hDll);
: : }
: //---------------------------------------------------------------------------
: :
: : tdump -ee 로 내용을 봤습니다.
: : 첨부한 그림중 Hellow는 다운받아서 만든 dll 입니다. 결과는 두줄 나옵니다.
: : 제가만든 dll은 dlltest_1, dlltest_2 처럼 내용 많이 나옵니다. (양이 많아서 두개의 파일로 첨부했습니다.)
: :
: : 옵션에서 Linker에서 Use dynamic RTC와  Packages Runtime부분 UnCheck 하고
: : Directories/Conditionals에서도 Include / Library path도 필요없는것 다 삭제 했습니다.
: :
: : 다운받은 예제는 C++ Builder 6.0 이전 버전에서 만든것 같습니다.
: : 저는 C++ Builder 6.0을 사용합니다.
: :
: : DLL 생성시 어떤 문제가 있었는지 말씀 부탁드립니다.
:
:  #include 
:  #pragma hdrstop
:  
:  extern "C" __declspec(dllexport)  void __stdcall SayHello() <<
:  {
:      ShowMessage("Hello World !");
:  }
:  int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
:  {
:      return 1;
:  }
:  
:  Make를 하면 dll 파일크기가 574 kb 나옵니다.  다운받은 예제로 make 하면  크기가 468 kb 나옵니다.
:  
:  dll를 호출하는 프로그램 소스는 아래와 같이 했습니다.
:  그러면 첨부한 그림 Error 메세지가 나타납니다.
:  
:  다운받은 예제로 만든 dll를 호출하면 정상적으로 처리가 됩니다.
:  
: 
:  hDll = LoadLibrary("C:\\TEMP\\DLL\\TestDll\\DynamicHelloDll.dll"); => 로 하면 정상 처리 됩니다.
:  
:  void __fastcall TForm1::Button1Click(TObject *Sender)
:  {
:      Label1->Caption = "";
:      
:      HINSTANCE hDll;
:      hDll = LoadLibrary("C:\\TEMP\\DLL\\TestDll\\dll3.dll");  => 이부분에서 Error 나타납니다.
:  
:      if(hDll==NULL)
:      {
:          ShowMessage("Can't load dll");
:          return;
:      }
:     
:     //typedef __declspec(dllimport) void (*SayHello)(void);<< 잘못됨
:     typedef void (__stdcall *MYFUNC) (); << 요롷게해도됨 전 이렇게했음;
: 
: 
:      //SayHello Test;
:  
:      MYFUNC Test = (MYFUNC)GetProcAddress(hDll,"SayHello");
:      if(Test)
:       Test();
:      
:      FreeLibrary(hDll);
:  }
: 
: 

+ -

관련 글 리스트
64761 [질문]DLL 생성시.. unitas 1677 2011/07/07
64798     Re:[질문]DLL 생성시 - 자답 unitas 1935 2011/07/13
64779     Re:[질문]DLL 생성시.. aa 1850 2011/07/08
64780         Re:Re:[질문]DLL 생성시.. unitas 1573 2011/07/09
64769     Re:[질문]DLL 생성시.. aa 1363 2011/07/07
64771         Re:Re:[질문]DLL 생성시.. unitas 1726 2011/07/08
64762     Re:[질문]DLL 생성시.. 이용태 1549 2011/07/07
64766         Re:Re:[질문]DLL 생성시.. unitas 1216 2011/07/07
64767             Re:Re:Re:[질문]DLL 생성시.. 이용태 1419 2011/07/07
64768                 Re:Re:Re:Re:[질문]DLL 생성시.. unitas 1900 2011/07/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.