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
[51009] Re:클래스(class) 선언 문의드립니다.
장성호 [nasilso] 1299 읽음    2007-10-24 00:02
이해가 잘 안되네요
몇가지 체크해보세요

1.  LoadLibrary 에서

      m_hHandle = LoadLibrary(("C\\aaa.dll").c_str()); //이 아니라
      m_hHandle = LoadLibrary("C\\aaa.dll");              // ==> 그냥 이렇게 하세요

2. FormShow에서
     tempclass 클래스를 new하는 부분이 없네요
     new로 생성하지 않고 tempclass->AFunc()  이렇게 그냥사용하시면
    실제 tempclass의 인스턴스 객체는 생성되지않는상태에서 함수만 호출된것이되는데..
    AFunc 함수내에서 인스턴스 맴버를 access하면 에러가 나겠죠

    포인터로 선언한 놈은 
       TTempClass* tempclass=new   TTempClass;
       이렇게 생성한후에 함수를 쓰시고
       마지막엔 delete  tempclass;  이렇게 free하시구요

    만약 new 하기 귀찮으시면
    위와같이 쓰시면 자동 생성되었다가 FormShow함수가 끝날때 자동 free됩니다.

void __fastcall TForm1::FormShow(TObject *Sender)
{
     TTempClass tempclass;
      if (tempclass.AFunc())
      {
       }

      if (tempclass.BFunc())
      {
      }
}

그럼...

 

짱구오빠 님이 쓰신 글 :
: 너무 초보적인 질문이라도 답변 부탁드립니다.
:
: 메인폼 하나와
: Unit 하나를 생성하고
: 아래와 같이 클래스를 선언했습니다.
:
: 유닛에 코딩한 함수입니다.
:
: #include "TempClass.h"
:
: //HINSTANCE m_hHandle;
:
: bool TTempClass ::AFunc(void)
: {
:    //Library Load
:     m_hHandle = LoadLibrary(("C\\aaa.dll").c_str());
:     if (m_hHandle == NULL) return false;
:
:     //Get Proc Address Set
:     Initialize = (DWORD(__stdcall*)(void*))GetProcAddress(m_hHandle , "C_Initialize");
: }
:
: bool TTempClass ::BFunc(void)
: {
: }
:
: Unit 헤더파일에 아래와 같이 선언했습니다.
:
: #ifndef TempClassH
: #define TempClassH
:
: //Class Define
: class TTempClass
: {
: private:
:       HINSTANCE m_hHandle;
:
:      DWORD (WINAPI* Initialize)(void* m_pReserved);
:
: public:
:       bool AFunc(void);
:       bool BFunc(void);
: }
:
: 메인폼에 아래와 같이 선언했습니다.
:
: //HSM Library & Connect class
: TTempClass* tempclass;
:
: //---------------------------------------------------------------------------
: //Form Show Event
: //---------------------------------------------------------------------------
: void __fastcall Tfmainform::FormShow(TObject *Sender)
: {
:       if (tempclass->AFunc())
:       {
:        }
:
:       if (tempclass->BFunc())
:       {
:       }
:
: }
:
:
: 이렇게 컴파일해서 실행하니
: LoadLibrary 함수 처리할때 Exception 에러가 납니다.
:
: 또한
: GetProcAddress
: 부분에서도 Exception 에러가 나네요.
:
:
: HINSTANCE m_hHandle;
: 선언을 유닛에 선언하면 에러가 나질 않네요.

+ -

관련 글 리스트
51006 클래스(class) 선언 문의드립니다. 짱구오빠 1271 2007/10/23
51009     Re:클래스(class) 선언 문의드립니다. 장성호 1299 2007/10/24
51027         Re:Re:클래스(class) 선언 문의드립니다. 짱구오빠 1424 2007/10/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.