FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[1749] Re:Re:[질문] Firebird embed 를 IBDatabase컴포로 접속 하는 방법..
바람 [] 2227 읽음    2006-01-06 01:37
감사합니다.! 제가 필요한 부분이 딱 이부분 이었네요..^^*
IBHeader.pas의 소스에 다음과 같이 const로 박혀있지요.
:
: const
: ...
: {$IFDEF MSWINDOWS}
:   IBASE_DLL = 'gds32.dll'; {do not localize}
: {$ENDIF}
: {$IFDEF LINUX}
:   IBASE_DLL = 'libgds.so.0'; {do not localize}
: {$ENDIF}




박지훈.임프 님이 쓰신 글 :
: 아마도 gds32.dll 때문인 거 같네요. 원래 gds32.dll는 파이어버드의 이전 버전 격인 인터베이스의 클라이언트 dll입니다.
: 그리고 파이어버드 서버의 클라이언트 dll은 fbclient.dll이고요.
: 그런데 파이어버드가 설치시에 하위호환성 때문에 fbclient.dll을 gds32.dll로 리네임해서 복사해두기도 합니다.
:
: 그런데 gds32.dll은 인터베이스나 파이어버드를 단 한번이라도 깔았거나 하면 윈도우의 시스템 디렉토리에 이 gds32.dll이
: 복사되어 버립니다. 따라서 여러 버전들 사이에 환경변수 경로의 문제가 생길 수 있습니다.
: 델파이나 C++빌더를 설치하면서도 인터베이스는 무심코 같이 설치할 수 있고...
:
: 파이어버드 임베디드 서버의 경우에는 임베디드 서버 자체가 클라이언트 dll을 대신하는 것이므로 fbembed.dll입니다.
: 따라서 파이어버드에 연결할 때 클라이언트 dll로 이 fbembed.dll을 가리키도록 해야 합니다.
: IBDatabase를 말씀하시는 걸로 봐서는 InterBaseExpress를 쓰시는 거 같은데.. dbExpress에서는 클라이언트 dll을
: 지정할 수 있게 되어 있는데, InterBaseExpress에서는 IBHeader.pas의 소스에 다음과 같이 const로 박혀있지요.
:
: const
: ...
: {$IFDEF MSWINDOWS}
:   IBASE_DLL = 'gds32.dll'; {do not localize}
: {$ENDIF}
: {$IFDEF LINUX}
:   IBASE_DLL = 'libgds.so.0'; {do not localize}
: {$ENDIF}
:
: 그래서, fbembed.dll을 그대로 가리킬 수 없으므로 이걸 gds32.dll로 이름을 바꿔주어야 합니다.
: "실행화일 경로 아래에 gds32.dll(firebird embed용..)를 복사"했더니 잘된다는 것이 이런 이유 때문입니다.
:
: 파이어버드 임베디드 서버를 쓰시려면 그렇게 하시는 것이 당연하다고 생각하시면 됩니다.
: 여러 애플리케이션이 동시에 접속하는 일반 디비 서버가 아니라 단일 애플리케이션이 내부적으로만 접근하기 위한
: 임베디드 서버니까 당연한 겁니다.
:
: 만약 런타임에는 잘 돌아가는데 디자인타임에는 안된다면, 윈도우 시스템 디렉토리(혹은 경로가 설정된 다른 디렉토리)에
: 인터베이스나 파이어버드의 gds32.dll이 있기 때문입니다. "not a valid database"라는 메시지가 나왔다면, 파이어버드
: 서버의 gds32.dll이 아니라 인터베이스의 gds32.dll일 가능성이 크겠네요.
:
: 이제... 파일찾기로 gds32.dll을 찾아낸 후에 그 파일을 임베디드의 fbembed.dll로 덮어씌워버리세요.
: 이 파일만 복사해도 돌아가겠지만, 임베디드 서버에는 부가 파일이 필요한 경우가 있으므로(에러가 발생했을 때 메시지를
: 출력하기 위해서.. 등등) 완벽하게 하려면 같은 경로에 임베디드 서버의 파일 몇개를 더 복사해줘야 할 수도 있습니다.
: 필요할 수 있는 파일에 대해서는 다음 글을 참고하세요.
: http://firebird.borlandforum.com/impboard/impboard.dll?action=read&db=fb_tutorial&no=11
:
: 그럼...
:
:
: 바람 님이 쓰신 글 :
: : 안녕하세요.
: :
: : IBExpert를 사용 Firebird embed 1.5 의 dll을 이용하여 database file를 만들었습니다.
: : c:\xxx\test.gdb
: : IBExpert 에서는 접속 잘되고 table로 잘만들어 집니다..
: :
: : 델파이에서 IBDatabase컴포로 디자인 타임시에 접속하는 방법을 알고 싶습니다.
: : IBDatabase의 databasename := localhost:c:\xxx\test.gdb
: : 로 몇일전까지 접속이 잘되었는데..
: :
: : 갑자기 c:\xxx\test.gdb is not a valid database란 에러가 나오네요..
: : 물론 IBExpert에서는 잘 접속 됩니다..
: :
: : 컴파일후 실행화일 경로 아래에 gds32.dll(firebird embed용..)를 복사해 두고
: : IBDatabase의 databasename := c:\xxx\test.gdb 로 하면
: : 실행시 접속 잘됩니다..
: :
: : 질문내용 정리 하겠습니다.
: : 델파이 IBDatabase 사용 '디자인 타임시'에 test.gdb 접속을 gds32.dll(firebird embed용..)으로 접속하는 방법
: : (소스 변경이나 레지스트리 등 그외 방법 으로 dll의 경로를 지정하는 방법)

+ -

관련 글 리스트
1745 [질문] Firebird embed 를 IBDatabase컴포로 접속 하는 방법.. 바람 1875 2006/01/05
1747     Re:[질문] Firebird embed 를 IBDatabase컴포로 접속 하는 방법.. 박지훈.임프 2456 2006/01/05
1749         Re:Re:[질문] Firebird embed 를 IBDatabase컴포로 접속 하는 방법.. 바람 2227 2006/01/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.