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
[38056] Re:VC에서 만든 dll을 어떻게 임포트 해서 사용하는지? -급해요
미수타윤 [] 1743 읽음    2004-11-16 04:01
상세하게, 자세히가 강한 압박을 주지만...ㅡㅡ

먼저 VC에서 C클래스로 DLL을 만드셨다면 ㅡㅡ C빌더로 사용할 수 없습니다.
즉, 표준 API로만 만드셔야 합니다.

만약 만드셨다면 C빌더에서 정적이든 동적이든 불러서 사용이 가능합니다.
가능하다는 것을 전제로 하여 아래에 몇몇의 예제 코드와 함께 설명을 붙여 내려 가겠습니다.

첫째, DLL소스 구성입니다.  VC로 작성하셨다면 아래와 같이 DllMain이 만들어 질 것입니다.
그리고 간단하게 나마 헤더파일도 작성하셔야겠죠^^...
//-----------------------------------------------------
// Sample.cpp
#include <windows.h>
BOOL APIENTRY DllMain( HANDLE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                    )
{
    return TRUE;
}
__declspec(dllexport) void __stdcall Func(void)
{
     MessageBox(NULL, "Sample", "Message", MB_OK);
}
//-----------------------------------------------------
그리고 헤더파일...
//-----------------------------------------------------
// Sample.h
#ifndef _SAMPLE_H
#define _SAMPLE_H
#ifdef __cplusplus
extern "C" {
#endif
    __declspec(dllexport) void __stdcall Func(void);
#ifdef __cplusplus
}
#endif
#endif
//-----------------------------------------------------

둘째, Sample.cpp 내에선 반드시 표준 API 함수만 사용하셔야 겠죠^^

셋째, 이게 중요합니다. 제가 괜히 함수앞에 이상야릇한 ㅡㅡ 선언을 많이 했겠습니까?
        다 이유가 있습니다. 이부분은 아래의 건단한 예제로서 간단하게 넘어가겠습니다.
        빌더관련 참고서적을 뒤져보시면 아주 자세하게 나와 있습니다.
        (빌더4 바이블 정우철 정보문화사)
       
        밑줄 쫙~, DEF파일을 만들어서 VC Project 목록에 붙입니다.
        아래와 같이 만들어서 말입니다.
//-----------------------------------------------------
// Sample.def
LIBRARY     SAMPLE.DLL
DESCRIPTION "SAMPLE DLL EXPORT BY YOON"

EXPORTS
    Func     @1   ; Func
//-----------------------------------------------------
넷째,  위와 같이 Sample.cpp와 함께 프로젝트에 엮어서 컴파일을 하십시오. 그리하면 Lib와 Dll이 같이 같은 이름으로 Debug나 Release에 만들어 집니다.

Sample.dll과 Sample.lib -> 이때 만들어진 Lib는 VC용으로 바로 가져다 사용하면 오케이...
그러나 빌더에서는 좀 변화를 줘야 함수이름을 변경하지 않고 바로 사용할 수 있습니다.

컴맨트 프롬프토로 가셔서 먼저 c:\implib/? 를 치시고 엔터~
그럼 대강 사용방법이 나옵니다. 먼저 c:\implib sample sample.dll 이렇게 입력하시고 엔터를 치시면 바로 그 폴더에 VC에서 만든 Dll을 불러 사용할 수 있는 정적 lib가 만들어집니다. 당근 거기서 만들어진 lib와 헤더를 불러 빌더에서 컴파일하면 함수이름변경없이 바로 정적으로 사용이 가능하며 VB나 여타 다른 컴파일러에서도 사용이 가능합니다.

제 딴엔 자세하고 상세히 ㅡㅡ 적어 내려갔지만... 굉장히 부족하네요...
더 궁금하신 내용이 있으시면 메일을 주십시오. ^^ 그럼 제가 아는 한도내에서 성심껏 답변을 해드리겠습니다.


란문 님이 쓰신 글 :
: VC에서 만든 vc.dll(vc.lib,vc.h 포함)을 c++ builder에서 어떻게 사용할 수 있는지
: 알려주시면 감사하겠습니다(상세하게, 자세히)

+ -

관련 글 리스트
38047 VC에서 만든 dll을 어떻게 임포트 해서 사용하는지? -급해요 란문 919 2004/11/15
38056     Re:VC에서 만든 dll을 어떻게 임포트 해서 사용하는지? -급해요 미수타윤 1743 2004/11/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.