잠온다 님이 쓰신 글 :
: 답변 감사합니다...
:
: 눈 빠지도록 보고있었음다...답변 안해주나하고....ㅡㅡ;;;
:
:
:
: 물론 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 함수..
이들 외에는 쓸일이 없었습니다.
약간의 지식이라도 도움이 되었으면 합니다..^^
그럼 꾸벅
- 아드린느와 함께.스틸하트 -
|