2013-03-11 5 views
2

Windows 서비스를 만들고 있습니다. 이 서비스는 하루에 한 번 Advantage Database에서 데이터를 읽어야합니다. 장점 6082

는 내 컴퓨터의 장점 데이터베이스를 복사하고 그것을 잘 작동하지만, 나는 다음과 같은 오류가 서버에서 서비스하려고하면

"AdsException : 오류 6082 : 오류 로딩 장점 로컬 서버 라이브러리를 . "

doc (link)에 따르면 \ WINDOWS \ SYSTEM 디렉토리에 ADSLOC32.DLL을 넣어야합니다.

시도해 보았지만 작동하지 않습니다.

아이디어가 있으십니까?

편집 : Windows 서비스와 정확히 동일한 코드를 실행하는 콘솔 응용 프로그램을 만들었으므로 정확하게 작동합니다. 문제는 서비스에서 비롯된 것 같습니다. 그러나 서비스의 어떤 부분이 잘못되었는지는 알 수 없습니다 ...

EDIT 2 : 프로세스 모니터에서 확인한 결과 서비스에서 adsloc32를로드하려고 시도하지 않았습니다. dll, adsloc64.dll을로드하려고 시도합니다. adsloc64.dll 파일을 찾지 못하여 응용 프로그램 디렉토리에 adsloc32.dll 사본을 만들고 adsloc64.dll이라는 이름을 지정했지만 작동하지 않았습니다.

+0

시스템 (이전 16 비트 Windows 디렉터리) 대신 32 비트 DLL에 항상 System32 (32 비트 시스템) 또는 SysWOW64 (64 비트 시스템에서)를 사용해야합니다. 이 점에 관해서 설명서가 정확하지 않습니다. http://msdn.microsoft.com/en-us/library/7d83bc18(v=vs.80).aspx –

+0

Windows는 여전히 16 비트 디렉터리를 검색하지만 이전 버전과의 호환성을 위해서만 사용됩니다. 이 링크를 참조하십시오 : http://msdn.microsoft.com/en-us/library/windows/desktop/ms682586%28v=vs.85%29.aspx –

+0

이미 adsloc32.dll 파일이 System32 및 SysWow64. 해당 파일을 내 응용 프로그램 디렉터리에 저장하려고하지만 여전히 작동하지 않습니다. –

답변

2

해결책을 찾았습니다.

Windows Sysinternals에서 프로세스 모니터를 사용하여 프로그램이 dll 파일을로드하려고하는 위치를 알 수 있습니다. 그리고 adsloc32.dll을로드하려고 시도하지 않고 adsloc64.dll을로드하고있었습니다.

adsloc64.dll 파일을 내 응용 프로그램 디렉토리에 넣으면 바로 작동합니다.

2

adsloc32.dll을 응용 프로그램과 동일한 디렉터리에 배치하십시오. 어쩌면 권리 문제가 있습니다.

+0

해결책을 시도했지만 작동하지 않습니다. –