2011-09-29 4 views
1

저는 관리되지 않는 DLL을 호출하여 프로그램에서 실제로 계산 된 대부분의 작업을 수행하는 매우 간단한 Windows Form 응용 프로그램을 작성했습니다. 이 프로그램은 디버그 및 릴리스 모드에서 제대로 실행됩니다. 또한 올바르게 설치되고 개발 컴퓨터에서 실행됩니다.DLL이 분산 응용 프로그램에 없습니다.

대상 컴퓨터 (동일한 운영 체제 인 64 비트 Windows 7)에 설치하려고하면 문제가 발생합니다. DLL이 .exe 파일과 같은 디렉토리에 있음에도 불구하고 "DLL을 찾을 수 없습니다"라는 메시지가 나타납니다. .msi 설치 파일을 사용할 때뿐만 아니라 OneClick 게시를 시도 할 때이 예외가 발생합니다. 파일을 찾을 수 없다는 오류가 발생하더라도 파일의 위치를 ​​인용합니다.

설치 프로그램 설정 중 하나가 올바르지 않습니까? DLL 또는 참조를 적절한 위치에 포함하지 않습니까? 도움이나 조언을 주시면 감사하겠습니다.

감사합니다.

+0

관리되지 않는 DLL은 COM DLL입니까, 아니면 p/호출합니까? –

+0

저는 P/Invoke를 사용하고 있습니다 – GregD

답변

4

배포 한 DLL에 배포하지 않은 추가 종속성이있을 수 있습니다. 이러한 종속성이없는 경우 일반적으로 이러한 유형의 오류가 발생합니다.

UPDATE :

MSVCR100D의 "D"는이 라이브러리의 디버그 버전의 것을 의미한다. 이는 대상 시스템에 존재하지 않을 가능성이 높으며 라이센스로 인해 배포를 방해 할 수 있습니다.

릴리스 모드에서 전체 다시 컴파일해야합니다. DLL이 완료되면 을 MSVCR100으로 대상 지정해야합니다 ("D"가 없음). 그렇지 않다면 아마 그 어셈블리의 디버그 빌드를 가지고있을 것입니다. 릴리스 버전을 찾아 링크하십시오.

+0

Chris의 답변에 추가하십시오. RedGate의 Reflector를 사용하여 관리되지 않는 DLL에 대한 종속성 목록을 얻을 수 있습니다. –

+0

Dependency Walker를 사용하여 대상 설치 디렉토리에 포함 된 Intel Performance Primitive DLL 하나 이외의 종속 DLL을 찾았습니다. KERNEL32와 MSVCR100D가 포함되어 있으므로 대상 컴퓨터의 system32 디렉터리에 포함시켜야합니다. 권리? – GregD

+0

아니요, msvcr100d.dll을 배포 할 수도 없습니다. 릴리스 빌드 만 배포하십시오. msvcr100.dll을 사용하여 –

0

CreateObject를 호출하여 비 관리 코드를 호출하는 경우 대상 컴퓨터에도 비 관리 DLL을 등록했는지 확인하십시오.

0

Microsoft에서 비슷한 'dll 찾을 수 없음'오류에 관한 게시물에서 : http://support.microsoft.com/kb/319114 때문에이 문제를 해결할 수있는 방법을 배울 수 있습니다. 1) 누락되었거나 손상된 dll 파일 (here) 2) dll을 호출하는 등록 경로가 잘못되었거나 누락되었거나 손상된 것일 수 있습니다. 그렇지 않으면 새로운 바이러스/악성 프로그램이 주위에 있는지 확인할 수 있습니다.

관련 문제