2013-02-08 5 views
2

파이어 버드 데이터베이스와 mysql 데이터베이스에 모두 연결되는 이식 가능한 응용 프로그램을 작성하고 있습니다. Delphi 2010에서 애플리케이션을 작성하고 dbExpress 컴포넌트를 사용하여 두 데이터베이스에 연결합니다. SQLconnection 구성 요소는 mysql 데이터베이스의 경우 dbxmys.dll 및 libmysql.dll을 사용하고 파이어 버드 데이터베이스의 경우 dbxfb.dll 및 fbclient.dll을 사용합니다.Delphi 2010, lib dll없이 mySQL 및 Firebird 데이터베이스에 연결

내 개발 컴퓨터에서 dll 파일을/windows/system /으로 옮겨야했습니다. 나는 이것이 올바른 파일을 찾아 연결하기 위해 시스템 경로 때문이라고 생각합니다. 다른 클라이언트 컴퓨터에서이 시도한 및 dll 파일을 찾을 수 없기 때문에 소프트웨어를 연결할 수 없습니다. 이것은 휴대용 응용 프로그램이므로 dll 파일을 포함 할 응용 프로그램 디렉토리의 하위 디렉토리를 포함하고 싶지는 않지만 클라이언트 시스템이 mySQL 및 Firebird를 설치하지 않고도 응용 프로그램을 실행할 수 있다고 생각하지는 않습니다.

더 좋은 방법이 있나요? 나는 서브 디렉토리를 만들었고 내 응용 프로그램을 보도록 강요했다. (파이어 버드와 mySQL이 어디서나 설치 될 수 있기 때문에) 그들이 포함 되었다면 나는 그들이 내 컴퓨터가 시작된 어떤 컴퓨터에 있는지 알았다. 그러나 나는이 접근 방식을 취하고 싶지 않습니다.

직접 db 연결 또는 dll 요구 사항 문제를 해결하는 한 내 옵션은 무엇입니까? 저는 숙련 된 소프트웨어 개발자가 아닙니다. 미리 감사드립니다.

업데이트 : DLL은 이제 exe와 같은 디렉토리에 있으며 응용 프로그램이 잘 실행됩니다. 나는 아직도 dll을 사용하고 싶지 않다. dll을 필요로하지 않는 몇 가지 구성 요소를 찾았지만 다른 옵션을 찾는 것이 이상적입니다.

+0

공유 라이브러리가 좋습니다. 내 일반적인 환경 설정은 .dll 파일을 .exe 파일과 같은 디렉토리에 보관하는 것입니다. 원본, dll 또는 기타 매체에 상관없이 * 모든 * 타사 종속성에 대한 라이센스를 확인하십시오. 앱과 함께 자유롭게 재배포 할 수 있다고 가정하지 마십시오. 항상 확인하십시오. IMHO ... – paulsm4

+0

@ paulsm2 라이센싱에 대한 팁 주셔서 감사합니다.이 응용 프로그램은 판매용이 아니므로 개인 용도로 사용해야합니다. 미래를 염두에 두겠습니다. 나는 이것이 내가해야 할 일이라고 생각한다. 나는 그들에게 내 exe의 집 주소를 지키고 있지만, 나는 그렇게하지 않기를 바랬다. – user1868232

+0

다시 공유 라이브러리는 양호합니다. 좀 더 복잡성 : * 더 많은 유연성 * (궁극적으로 런타임 효율성). 그러나 "install directory"와 "\ windows \ system32"중 하나를 선택하면 일반적으로 "install directory"를 선호합니다. IMHO ... – paulsm4

답변

1

당신이 할 수있는 일은 zip 리소스로 .exe 파일을 메인 폴더에 저장 한 다음 로컬 폴더 (로컬 "응용 프로그램 데이터"등)에서 확장하고 거기에서 라이브러리를 실행하는 것입니다. 따라서 시스템 경로 (아마도 관리자 권한으로)에 파일을 넣거나 경로 자체를 변경할 필요가 없습니다.

결과적으로 .dll을 .exe와 함께 복사 할 필요가 없으며 .dll이 이미 사용 가능한 경우 응용 프로그램에서 사용합니다. .exe 폴더는 라이브러리 파일에 의해 "오염"되지 않으며 소프트웨어가 여전히 자체 설치 될 수 있습니다. 다른 컴퓨터에서 .exe를 복사하는 경우 .dll을 그대로두고 설치 준비가 완료됩니다 숨겨진 로컬 폴더

예를 들어 우리의 SynProject tool이 Hunspell 라이브러리를 사용하여 맞춤법 검사를하는 방법입니다. this SO answer을 참조하십시오.

+0

dll 및 conf 파일 집합에서 in-process 데이터베이스 서버로 실행되도록 설계된 Firebird의 내장 버전에 대해서도 동일한 작업을 수행 할 수 있습니다. – jachguate

+0

... MySQL의 임베디드 버전과 동일합니다! ;) –

+0

정확하게 이해하면 이것이 완벽합니다! 현재 내가 지시 한 링크를 검토 중입니다.나는 결코 초보자이기 때문에 리소스 파일을 포함시키지 않았다. 올바른 방향으로 나를 가르키는 다른 링크는 굉장 할 것이다. 다시 한번 감사의 말을 전한다. – user1868232