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
[66462] Re:Re: RAD 툴에서 VC로 만든 64비트 DLL 사용
라이브러리 [] 1759 읽음    2012-02-29 15:48
우선 답변에 감사합니다!! ^^

우아.. 굉장히 복잡해 지네요....

그럼 만약에 32비트로 바꿔서 사용한다면 저런 절차없이 그냥 사용이 가능한가요??

그런데 32비트 dll을 implib로 lib 생성해서 프로그램 실행했더니
(링커 설정, RTL체크 끄고/키고...)


#include "Unit1.h"
#include "UniDAQ.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    Ixud_DriverClose();
}
//---------------------------------------------------------------------------



-----------------------------------------------------------------------------
[Linker Error] Error: Unresolved external 'Ixud_DriverClose' referenced from (경로)...\DEBUG_BUILD\UNIT1.OBJ

라는 링커 에러가 나옵니다... 그냥 사용은 불가능 한 건가요??;;; 에겅;;

빌더 님이 쓰신 글 :
: 라이브러리 님이 쓰신 글 :
: : 라이브러리 프로젝트 추가시
: : [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 사용 라이브러리 1759 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 사용 라이브러리 1185 2012/02/29
66457     Re:64bit는 어쩔수가 없군요.. ㅠㅠ 다른 질문입니다;; 라이브러리 1173 2012/02/29
66458         Re:Re:64bit는 어쩔수가 없군요.. ㅠㅠ 다른 질문입니다;; Lyn 1107 2012/02/29
66460             Re:Re:Re:64bit는 어쩔수가 없군요.. ㅠㅠ 다른 질문입니다;; 라이브러리 1179 2012/02/29
66454     Re:아.. lib 링크시 자꾸 에러가 나요... 박지훈.임프 1317 2012/02/29
66455         Re:Re:아.. lib 링크시 자꾸 에러가 나요... 라이브러리 1345 2012/02/29
66456             Re:Re:Re:아.. lib 링크시 자꾸 에러가 나요... Lyn 1429 2012/02/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.