2010-06-07 5 views
2

C# 사용자 인터페이스가있는 모든 C# .NET 응용 프로그램에 C++ DLL (C++ 클래스 라이브러리 프로젝트)을 호출하여 처리가 완료되었습니다. C# 프로젝트에 대한 참조입니다.C# .NET Windows 응용 프로그램에서 C++ dll을 호출 할 때 런타임 오류가 발생했습니다.


유형의 처리되지 않은 예외 'System.IO : 다시 내 컴퓨터를 포맷 때

그러나 최근 다음과 같은 예외를했다 비주얼 스튜디오 2005 년, 백업 된 내 프로젝트를 실행하려고 .FileNotFoundException 'System.Windows.Forms.dll에서 발생했습니다.

추가 정보 : 지정한 모듈을 찾을 수 없습니다. (HRESULT에서 예외 : 0x8007007e가) 내가 버튼을 클릭 이벤트에서 (예를 들어) 다음 코드를 삽입 할 때 예외가 발생


. 예외가 실제로 양식을 문제없이로드되는 경우에도이 줄을 슬로우 표시됩니다 그러나

private void button3_Click(object sender, EventArgs e) 
    { 
     CyclopiaDll.Class1 cc = new CyclopiaDll.Class1(); // calling dll 
     cc.clearData();    
    } 

: 내가 다시 참조가 DLL 새로운 프로젝트를 구축하고 추가하는 시도

Application.Run(new Form1()); 

하지만 여전히 예외가 발생합니다. 다른 컴퓨터에서이 프로젝트를 실행하려고 시도하기 전에 이런 일이 일어났습니다. 그러나 내 컴퓨터를 포맷 한 후에도 응용 프로그램을 실행할 수 없습니다.

내가 해결할 수있는 유일한 방법은 이전과 같이 처음부터 프로젝트를 다시 만드는 것입니다. 시간이 많이 걸린다.

다른 컴퓨터와 마찬가지로이 프로젝트를이 컴퓨터에서 실행할 수 있도록이 문제를 피할 수있는 방법이 있습니까?

답변

3

의존성이 누락 된 것 같습니다. 즉, C++ dll이 의존하는 다른 dll인데, 이는 컴퓨터에 존재하지 않는 것 같습니다.

"Dependency Walker"와 같은 유틸리티를 사용하여 문제가있는 컴퓨터에서 C++ dll을로드하면 누락 된 종속성이 모두 표시됩니다. 그런 다음이 종속성 (예 : C++ 런타임 버전이 누락 됨)을 처리 한 다음 해당 응용 프로그램과 함께 직접 또는 적절한 경우 병합 모듈을 통해 패키지되는지 확인하는 경우입니다.

종속성 워커 : http://www.dependencywalker.com/

+0

에 있습니다. 종속성 워커 (dependency walker)가 표시 한 일부 누락 된 dll 경로를 찾을 수있었습니다. 그것들을 고친 후에 그것은 작동하는 것 같다 :) – chathuradd

1

컴파일러가 참조 된 dll을 출력 폴더에 넣지 않는 것처럼 보입니다. 나는 그것을 수동으로 거기에 넣을 것이다.

+0

그런데 그것은 문제가되지 않습니다. 내가 확인하고 DLL이 제대로 생성되고 참조됩니다. – chathuradd

+0

실패한 프로젝트의 출력 폴더,'{Project} \ bin \ Debug'. Visual Studio에서 참조하는 모든 위치에서 dll을 복사해야하지만 때로는 그렇지 않습니다. –

+0

예 DLL이 디버그 폴더 – chathuradd

관련 문제