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
[66459] Re: RAD 툴에서 VC로 만든 64비트 DLL 사용
빌더 [] 1670 읽음    2012-02-29 15:25
라이브러리 님이 쓰신 글 :
: 라이브러리 프로젝트 추가시
: [Linker Error] Error: ' contains invalid OMF record, type 0x21 (possibly COFF)
:
: 라는 에러 메시지가 나옵니다... COFF는 VC++ 라이브러리라 바꿔 줘야 한다고 검색해보니 나오는 것
:
: 같더라구요... 그런데 어떻게 바꿔줘야 할지... ㅠㅠ.. 바꿔도 이상하게 되는 것같아 도움 요청합니다...
:
: 라이브러리 나름 바꾸고 나니 함수에러가 나더라구요...
: [Linker Error] Error: Unresolved external 'Ixud_DriverClose' referenced from
:
: 저 에러는 함수를 제대로 찾을 수 없다고 하는것같던데...
:
: 어떻게 해줘야 할지 막막합니다 ㅠㅠ;;
:
: 빌더에서 사용가능하게끔 변환시켜주시면 감사하겠습니다..
:
: 오전안으로 써봐야 해서... 빠르게 부탁드립니다!!! ㅠㅠ





답변:

RAD 툴에서는 64비트 C++ 컴파일러가 제공되지 않기 때문에 C++로는 컴파일 할 수 없습니다.
Delphi64 비트 컴파일러를 사용하면 가능 하기는 한데, RAD 툴에서 제공하는 IMPLIB 는 64비트를 지원하지 않죠.
그러나 IMPLIB 없이도 가능 합니다.


예를 들어... UniDAQ.h 를 보면...

EXPORTS WORD  CALLBACK  Ixud_GetDllVersion(DWORD *wDLLVer);       

Ixud_GetDllVersion() 함수가 위와 같은 식으로 선언되어 있는데...


파스칼 유닛에서 다음과 같은 식으로 Import 함수를 선언 하세요.

function Ixud_GetDllVersion(var X: Cardinal): Word; {stdcall}
    external 'UniDAQ.dll';

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var
  dllVersion : Cardinal;
begin
  Ixud_GetDllVersion(dllVersion);
end;


위와 같은 식으로 VC로 컴파일 되어있는 64비트 DLL을 사용하면 됩니다. 컴파일은 Delphi 64 비트로...

위에서 코멘트 되어있는 stdcall은 의미가 없습니다.  32비트 플렛폼에서는 여러가지 Calling Convention이 사용
되지만,  64비트 CPU 아키텍쳐에서는 가용 레지스터가 대폭 확장 되었기 때문에 Calling Convention을 레지스터를
통한 방식 하나로 통일해서 사용하기로 정했기 때문입니다.

UniDAQ.DLL 에서 제공되는 나머지 함수들도 위와 같은 식으로 사용하면 됩니다.

+ -

관련 글 리스트
66452 아.. lib 링크시 자꾸 에러가 나요... 라이브러리 1217 2012/02/29
66459     Re: RAD 툴에서 VC로 만든 64비트 DLL 사용 빌더 1670 2012/02/29
66462         Re:Re: RAD 툴에서 VC로 만든 64비트 DLL 사용 라이브러리 1760 2012/02/29
66463             Re:Re:Re: RAD 툴에서 VC로 만든 64비트 DLL 사용 Lyn 1415 2012/02/29
66466                 Re:제가 잘 못 보여드린건가요??;; 라이브러리 1092 2012/02/29
66464                 Re:Re:Re:Re: RAD 툴에서 VC로 만든 64비트 DLL 사용 라이브러리 1186 2012/02/29
66457     Re:64bit는 어쩔수가 없군요.. ㅠㅠ 다른 질문입니다;; 라이브러리 1173 2012/02/29
66458         Re:Re:64bit는 어쩔수가 없군요.. ㅠㅠ 다른 질문입니다;; Lyn 1108 2012/02/29
66460             Re:Re:Re:64bit는 어쩔수가 없군요.. ㅠㅠ 다른 질문입니다;; 라이브러리 1179 2012/02/29
66454     Re:아.. lib 링크시 자꾸 에러가 나요... 박지훈.임프 1317 2012/02/29
66455         Re:Re:아.. lib 링크시 자꾸 에러가 나요... 라이브러리 1346 2012/02/29
66456             Re:Re:Re:아.. lib 링크시 자꾸 에러가 나요... Lyn 1429 2012/02/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.