2012-03-30 3 views
0

저는 매우 숙련 된 Windows 개발자는 아니므로이 모든 것이 의미가 있기를 바랍니다.DLL을로드 할 때 System.IO.FileNotFoundException이 발생했습니다.

Visual Studio 2010을 사용하여 관리되는 어셈블리 DLL을 만들었습니다. DLL (Plip.dll)에는 System.IO.SerialPort 클래스를 사용하여 직렬 포트를 통한 간단한 통신을 수행하는 C++ 클래스가 포함되어 있습니다.

두 번째 Visual Studio 프로젝트에서 Plip.dll에있는 클래스를 사용하는 간단한 GUI를 만들었습니다. 나의 GUI 프로젝트에서 나는 #using "Plip.dll"이라는 줄을 가지고있다. 프로젝트 속성에서 'Resolve #using References'값을 Plip.dll의 올바른 위치로 설정했습니다. GUI는 괜찮습니다. GUI.exe와 Plip.dll을 같은 폴더에 복사하면 GUI가 제 컴퓨터에서 정상적으로 실행됩니다.

문제는 두 파일을 두 번째 컴퓨터에 복사 할 때 GUI 실행 파일을 실행할 수 없게된다는 것입니다. 다음과 같은 오류가 발생합니다 : "System.IO.FileNotFoundException 파일이나 어셈블리를로드 할 수 없습니다"Plip.dll "Vesion = ....". exe와 dll이 같은 폴더에 있지만이 오류가 발생합니다.

이 문제를 해결하는 방법에 대한 제안 사항이 있으십니까? 런타임에 DLL을 올바르게로드하기 위해 GUI 프로젝트에서 설정해야하는 옵션이 있습니까?

답변

3

문제는 Plip.dll이 아니지만 그 종속성이 있다고 가정합니다.

두 번째 컴퓨터에 Dependency Walker을 사용하여 다른 dll이 필요한지 확인하십시오 (시스템 폴더 또는 개발 컴퓨터의 % PATH %에는 설치되지만 다른 컴퓨터에는 설치되지 않을 수 있음). 이 두 번째 컴퓨터의 Visual Studio가 설치되어 있지 않은 경우

, 당신은 아마 Microsoft Visual C++ 2010 Redistributable Package 누락 디버그 디버그 의존성이 필요 구축하기 때문에

는 또한이 릴리스에서 컴파일 있는지 확인하십시오 (당신은 다른 컴퓨터에 설치해야합니다) .

+0

정확하게 맞습니다. Dependency Walker는 MS C++ 2010 재배포 가능 패키지가 누락되었음을 보여주었습니다. 도와 주셔서 감사합니다. –

관련 문제