2009-09-14 3 views
2

먼저 오프, 용서. 이 응용 프로그램은 모두 libmysql.dll 버전 5.0.xx (실제 버전은 잊어 버렸음)에 대해 Delphi 2007로 작성되었습니다.델파이와 DLL 버전

이 dll은 모든 사용자에게 배포되었으며 정상적으로 작동합니다.

방금 ​​Delphi 2010으로 업그레이드했고 MySQL 서버를보기 위해 libmysql 5.1.xx를 사용자에게 제공해야한다는 것을 알았습니다.

문제점 : 5.0.xx libmysql을 최신 버전으로 바꾸면 문제가 발생합니다. 기존 응용 프로그램이 시작되지 않습니다. 플립 측면에서 델파이 2010은 오래된 DLL에서는 작동하지 않습니다.

응용 프로그램의 \ bin 폴더에 적절한 dll 버전을 배치하여 두 버전의 IDE (2007 및 2010)를 데이터베이스와 함께 사용할 수 있지만 사용자 문제는 해결되지 않습니다.

적절한 버전의 DLL을 찾기 위해 응용 프로그램을 얻는 방법에 대한 제안 사항. DLL을 지옥에

우리는 델파이 바로 2010 년 우리의 모든 응용 프로그램을 이동해야하지 바라고

...

답변

4

몇 가지 방법이 있습니다 : Dynamic-Link Library Search OrderDynamic-Link Library Redirection을 확인하십시오. 가장 안전한 방법은 응용 프로그램 실행 폴더에 필요한 DLL을 넣는 것입니다. 왜냐하면 처음에 DLL을 검사하기 때문입니다. 오늘날의 디스크 크기를 감안할 때 디스크 공간 문제는 아닐 수도 있습니다. DLL은 또한 프로세스간에 공유되지 않을 수도 있지만 너무 문제가 될 수 없습니다. 그냥 libmysql DLL이 문제 여기

에 대한

+0

그게 내가 찾고 있던거야! 공식적으로 이전 자료를 마이그레이션 할 때까지는 최소한 새 응용 프로그램에 대한 dll을 사용할 수 있습니다. –

+0

좋은 호출입니다! 로드 순서를 잊어 버렸습니다. :-) –

4

에 오신 것을 환영합니다!

이 문제를 해결하려면 5.0 버전과 다른 폴더에 5.1 버전을 설치하고 모든 응용 프로그램에서 사용할 올바른 버전을 찾아야합니다. 따라서 이전 버전을 새 버전으로 바꿀 수는 없습니다.

그러나 이전 응용 프로그램이 새로운 5.1 버전으로 실행되는지 확인하십시오. 가끔씩 이것은 DLL의 풋 프린트가 변경되지 않았기 때문에 작동 할 것입니다. 충돌이 발생하면 두 가지 버전을 유지해야합니다.

이전에는 MySQL DLL을 응용 프로그램의 바이너리 폴더로 복사하여이 문제를 해결했습니다. 그렇게하면 여러 MySQL 버전을 지원할 수 있습니다. 실용적이지는 않지만 충분히 조심하면 효과가 있습니다.

요즘 SQL Server를 사용하므로 과거의 문제입니다.

+0

감사 나는 * 핵심 문제는 가정 내가 어떻게 SYSTEM32 아닌 다른 dll을 찾을 수있는 새로운 응용 프로그램을받을 수 있나요 * (우리가 사용하는 새로운 델파이 2010 애플 리케이션을 이야기하기가 쉬울 것입니다 예를 들어 로컬 bin 폴더) –

+0

예. 불행히도 Delphi 2007을 사용하는 동안 DBExpress 구성 요소를 설치하지 않았거나 요즘 MySQL을 사용하고 있습니다. 하지만 기본적으로 두 버전을 서로 다른 폴더에 유지해야합니다. –

1

은 블로그 게시물

음, 새로운 API 버전과 변화를 만들 MySQL의 하위 버전의 모든 릴리스에서 추출물 5 및 5.1 이렇게 두 개의 API 바인딩이 필요합니다. 그게 전부는 아니야. 5.1에서 각 하위 버전도 새로운 API 변경 사항을 생성하므로 MySQL의 에 관계없이 모든 버전에 다른 API가 있습니다. 데이터베이스와의 통신을 유지하는 것은 악몽입니다.

전체 블로그 게시물

아마, 솔루션이 할 수있는 당신은 혼자있는 here

은 ... dll이 필요하지 않습니다 MySQL devart driver with direct mode

0

는 내가 뭘하면 이름을 바꿀되어 사용 될 수 있습니다 libmysql5.1.51.dll에 파일을 복사하고 응용 프로그램 실행 폴더에 넣습니다. 내 SqlLibraryInit() 코드는 다음과 같습니다

const lib = 'libmysql5.1.51.dll'; 
... 
libmysql_fast_load(lib); 

이 방법, 상수를 변경하여 내가 사용하고자하는 중 빌드로드 할 수 있습니다.

관련 문제