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
[46599] [질문]dll의 클래스를 동적으로 링크하기
두현택 [] 1687 읽음    2006-09-21 20:24
매번 도움만 받고 있어서 염치없지만, 예제를 찾아서 해보니까 뜻대로 안되서
질문드립니다.

구성은 아래와 같습니다.

//dll 소스 unit5.h
#include "DllClient.h"
#ifdef __BUILDING_THE_DLL
    #define __EXPORT_TYPE dllexport
#else
    #define __EXPORT_TYPE dllimport
#endif
class __declspec(__EXPORT_TYPE) MyClass5
{
public:
    int x,y,z;
    MyClass5(){ x=5, y=6, z=7; };
    void WINAPI def(void);
};
extern "C" __declspec(__EXPORT_TYPE) void WINAPI def(void);

//dll 소스 unit5.cpp
void WINAPI def(void) {    ShowMessage("def");  }

//---------------------------------------------
//실행 소스 test.h
#include "unit5.h"
class TForm1 : public TForm
{
public:
    MyClass5* obj1;
    WINAPI  void(*abc)(void);
};

//실행 소스 test.cpp
#include "test.h"
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
    HINSTANCE hDll;
    if(ListBox1->ItemIndex == 4){        //dll 클래스 호출에서 access violation 에러
        hDll = LoadLibrary("Project5.dll");
        obj1 = (MyClass5 *) GetProcAddress(hDll, "MyClass5"); //<-----요기서 obj1는 NULL이 나옵니다.
        obj1->x = 1;                           //요기서 Access violation Error 뜨고요
        FreeLibrary(hDll);
        hDll = NULL;
    }
    if(ListBox1->ItemIndex == 5){        //여기 dll 함수 호출은 되는데
        hDll = LoadLibrary("Project5.dll");
        abc = (void (__stdcall *)(void)) GetProcAddress(hDll, "def");
        abc();
        FreeLibrary(hDll);
        hDll = NULL;
    }
}

이렇게 되있는데,
원래 이런게 안되는지 뭘 잘못한건지 좀 알려주세요~

+ -

관련 글 리스트
46599 [질문]dll의 클래스를 동적으로 링크하기 두현택 1687 2006/09/21
71282     Re:[질문]dll의 클래스를 동적으로 링크하기 Soo 494 2014/05/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.