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
[15079] Re:Re:Re:DLL에서용.
SteelHeart [] 1001 읽음    2002-01-29 00:53
잠온다 님이 쓰신 글 :
: 답변 감사합니다...
:
: 눈 빠지도록 보고있었음다...답변 안해주나하고....ㅡㅡ;;;
:
:
:
: 물론 windows.h를 쓰죠...
:
: 근데 제가 허접이라서...ㅡㅡ;;;
:
: 제대로 아는건줄 모르겠지만...
:
: DLL이 밴더에 따라서 호출형식이 다른걸로 알고 있습니다...
:
: mfc에서 만든 dll하고 borland에서 만든 dll이랑은 함수 호출이 다른걸루 ......
:
: 그래서 borland에서 vc++ dll 에 호환되게 만들어주는 위자드도 빌더에서 제공하죠...
:
:
:
:
: 근데 이게 win32용 Dll은 우찌 되는건줄 모르겠음다...ㅡㅡ
:
: 그냥 빌더 위자드에서 c형식으로 맞추고 오른쪽란 스타일은 모두 비우고 만들면...
:
: win32용 DLL인줄 알고 있었거덩요...
:
: 스투디오에서 선택해서 만드는 win32 Dll과 똑같을거라 생각 했음다...ㅡㅡ;;;
:
: win32용이니 당연히 vc하고 호환이 될꺼라고요.....
:
:
:
:
: 제가 지금 하는 작업이 brew라고 퀄컴에서 나온 모바일 스펙인데..
:
: win32용 DLL을 만들어 거기에 적용시키는 것입니다...
:
: 근데 스투디오에서 만든건 제대로 인식을 합니다...
:
: 약간에 셋팅이 필요하긴합니다...
:
: 헤더파일하고 preprocessor definitions에 몇가지 추가를 합니다...
:
: 이렇게 셋팅하고 컴파일한 win32 dll은 잘 인식을 하고 있습니다..
:
:
:
:
: 하지만 빌더에서 만든건 인식을 못하고 있습니다....
:
: 스투디오 셋팅에 대응이 되는 걸루 다 셋팅하고 만들었는데...
:
: brew에서는 인식을 못하더군요.....
:
: 앞서 말한것 처럼 밴더마다 다른 호출방식때문이려니 했었는데...
:
: 빌더에서 dll을 만들어 본적이 없어서...
:
: 확실하지가 않더라고요....
:
: 그래서 이렇게.......^^;;;
:
:
:
:
: 다시말하면요...
:
: 스투디오에서 만드는 win32 DLL을 빌더에서도 호환이 되게....
:
: 인식이 되게 만들수 있는가 하는겁니다...
:
: 아울러....
:
: 빌더에서의 DLL에 대해 설명을 점 해주시면...ㅡㅡ;;
:
: 감솨하겠음당......
:
:
: .......조회는 해봤는데용 너무 토막토막이라서...^^;;;

간단하게 말해서

VC DLL과 BCB DLL 은 그 구조가 약간 차이가 있습니다.

그래서 DLL 그대로는 서로의 개발툴에 사용을 할 수가 없는데요

빌더의 Bin 디렉토리에 보면

VC DLL -> BCB DLL 로

BCB DLL -> VC DLL 로 바꿔주는 툴이 있습니다.

그리고 LIB 파일도 추출해 줍니다.

그러니 일단 호환 문제는 전혀 걱정하실 필요 없구요.

Win32 DLL 이란 게 약간 의문이 드는데요

제가 DLL 만들면서 해 보면서 그런 문제는 없었습니다.

빌더에서 위자드로 생성하는 DLL은

그저 그 유닛 안에 필요한 코드를 넣어주면 그만입니다.

물론 약간의 규칙이 있습니다만..(__import __export)

여튼 정리해 보면,

:물론 windows.h를 쓰죠...

  -> 빌더에서도 당연히 쓰는 헤더입니다. 설마..모르실리야..


: DLL이 밴더에 따라서 호출형식이 다른걸로 알고 있습니다...
:
: mfc에서 만든 dll하고 borland에서 만든 dll이랑은 함수 호출이 다른걸루 ......

  -> 위에 말씀드렸듯이 다르긴 하지만 변환 툴을 제공합니다. 그걸 쓰시면 됩니다.
    

: 근데 이게 win32용 Dll은 우찌 되는건줄 모르겠음다...ㅡㅡ
:
: 그냥 빌더 위자드에서 c형식으로 맞추고 오른쪽란 스타일은 모두 비우고 만들면...
:
: win32용 DLL인줄 알고 있었거덩요...
:
: 스투디오에서 선택해서 만드는 win32 Dll과 똑같을거라 생각 했음다...ㅡㅡ;;;
:
: win32용이니 당연히 vc하고 호환이 될꺼라고요.....

  -> Win32 / Win16 구분은 쓰이는 API의 처리구조를 뜻하는 겁니다(..라고 알고 있습니다)
     따라서 Win32/16 구분 문제는 툴에 전혀 상관없는 개별적인 문제입니다.
     빌더도 Win32/16 각각 생성이 가능합니다. 그러나 님께서 말한 대로
     Win32로 만들더라도 벤더들 만의 형식이 있으므로
     변환툴을 이용해서 바꿔주면 VC 에서도 사용이 가능한 겁니다.


: 스투디오에서 만드는 win32 DLL을 빌더에서도 호환이 되게....
:
: 인식이 되게 만들수 있는가 하는겁니다...

  -> 위에 설명했듯이, 변환툴을 사용한 약간의 변환과 호출 규약만 따른다면
     100% 사용 가능합니다(..라고 다른 분들이 이미 직접 해 보시고 확인해 주셨습니다)
     Win16/32 문제는 쓰이는 함수의 처리에 관한 내용이구요,
     VC DLL / BCB DLL 문제는 DLL 함수 호출 규약의 문제입니다.
     두개를 잘 구분하세요.


괜히 잘 모르고 주제넘게 답변을 단 것 같습니다만,

일단 변환 툴과 호출 규약에 대해서 알아보시고,

간단한 테스트 DLL을 만들어서 해 보세요.

저 같은 경우는 빌더에서

__import / __export 확장자랑 LoadLibrary / Freeㅣibrary  API 함수..

이들 외에는 쓸일이 없었습니다.


약간의 지식이라도 도움이 되었으면 합니다..^^

그럼 꾸벅

- 아드린느와 함께.스틸하트 -

+ -

관련 글 리스트
15047 DLL에서용. 잠온다 899 2002/01/27
15068     Re:DLL에서용. hongfox 1652 2002/01/28
15057     Re:DLL에서용. 김영균 1038 2002/01/28
15056     Re:DLL에서용. 김영균 771 2002/01/28
15050     Re:DLL에서용. 지영배 929 2002/01/28
15051         Re:Re:DLL에서용. 잠온다 868 2002/01/28
15079             Re:Re:Re:DLL에서용. SteelHeart 1001 2002/01/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.