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
[52941] Re:dll프로그래밍 중 문제점좀봐주세요
외랑 [] 1577 읽음    2008-03-30 22:37
요렇게 만드시면 됩니다. 예제로 올려드립니다.

//--- 요건 dll의 함수들의 구현부입니다. cpp란 얘기입니다.  아래에 헤더 파일을 자세히 봐주세요
//  Form은 TLTCheck와 같이 구현되어져 있습지요.. 폼은 다른 소스에 따로 구현되어있다는 얘깁니다.
//  Dll의 cpp내용은 단지 구현된 Form의 함수만을 호출하는 형태가 되면 됩니다.
//  제약 사항은 주고받는 자료형이 조금 제한적인 것이죠.
//  도움이 되시면 좋겠습니다.

#pragma argsused
TLTCheck mltcheck;

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
    return 1;
}
//---------------------------------------------------------------------------

int INPEXP CheckProc_MH_LampLife()
{    return mltcheck.LampLifeProcCheck(); }
//---------------------------------------------------------------------------
int INPEXP StartProc_MH_LampLife()
{    return mltcheck.LampLifeProcStart();  }
//---------------------------------------------------------------------------
int INPEXP EndProc_MH_LampLife()
{    return mltcheck.LampLifeProcEnd(); }
//---------------------------------------------------------------------------
// ....... 계속.... 구현내용 있지만 지면관계상 생략했습니다.

/****************************************************************************/
//--- 여기 부터 헤더 입니다.

#ifdef __DLL__
#define INPEXP __declspec(dllexport)
#else
#define INPEXP __declspec(dllimport)
#endif
//---------------------------------------------------------------------------
extern "C"
{
    int INPEXP CheckProc_MH_LampLife();   // 필요시 호출 요구  ret : -1(시간초과), 0(ok)
    int INPEXP StartProc_MH_LampLife();   // 시작시 자동 실행됨
    int INPEXP EndProc_MH_LampLife();     // 종료시 자동 실행됨
// ..... 계속,  역시 이하 내용은 생략합니다.
}
//------------------------------------------------------------------------------------
// 이렇게 생성되는 dll, h파일 혹은, dll, lib, h파일이 있으면 동적으로든, 정적으로든 사용할 수 있습니다.
// 전역 함수처럼 동작되는 것은 아시죠?
// 초보님이 보이신 구현 부분(cpp)의 함수명에도 __declspec(dllexport)가 각각 들어가야 됩니다.
// 위에서 처럼 매크로로 작성하시는게 속편합니다.


초보 님이 쓰신 글 :
: #include <basepch.h>
:
:
: #include <graphics.hpp>
: #pragma hdrstop
: #pragma package(smart_init)
: //---------------------------------------------------------------------------
:
: //   Package source.
: //---------------------------------------------------------------------------
:
: //dll 프로그램부분
: #pragma argsused
: int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
: {
:     return 1;
: }
: //---------------------------------------------------------------------------
: extern "C" __declspec(dllexport) void Win_Angle();
:
:  void Win_Angle()                   <<<<<-------------------------여기 수정 필요합니다.... 뭔말인지 아시죠?
: {
:    //Form2->Show();
:     HWND H = FindWindow(NULL, "팡야:시즌4");
:     if (H == NULL) return;
:
:     HDC DC = GetDC(H);
:     Graphics::TBitmap *wa=new Graphics::TBitmap;
:     wa->LoadFromFile("angle.bmp");
:     BitBlt(DC,0,0,800,600,wa->Canvas->Handle,0,0,SRCCOPY);
:
:     ReleaseDC(H, DC);
:
: }
: //여기가지 dll
:
: //여기서부터 호출부분;
: #pragma hdrstop
:
: #include "Unit2.h"
: //---------------------------------------------------------------------------
: #pragma package(smart_init)
: typedef void (*MY_FUNC_testDLL)();
: #pragma resource "*.dfm"
: TForm2 *Form2;
: //---------------------------------------------------------------------------
: __fastcall TForm2::TForm2(TComponent* Owner)
:     : TForm(Owner)
: {
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm2::Button1Click(TObject *Sender)
: {
:       HINSTANCE  dll;
:       dll = LoadLibraryEx ("winangle.bpl" , NULL, LOAD_LIBRARY_AS_DATAFILE );
:       MY_FUNC_testDLL Win_Angle=(MY_FUNC_testDLL)::GetProcAddress(dll,"Win_Angle");
:               //함수사용부분?
: }
: //여기까지호출부분입니다
: 여기서 잘못된부분 지적좀 해주세요
: bpl패키지로해논겁니다
: 그리고 라이브러리 호출됬다면 함수사용부분에 바로 사용하면되나요?

+ -

관련 글 리스트
52939 dll프로그래밍 중 문제점좀봐주세요 초보 1186 2008/03/30
52941     Re:dll프로그래밍 중 문제점좀봐주세요 외랑 1577 2008/03/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.