2009-02-02 5 views
5

관리 C++을 사용하여 dll을 만들었습니다. 이제 C#에서 사용하려고합니다. 프로젝트 참조에 Object를 추가했습니다. 개체 브라우저는 dll에있는 개체를 표시합니다. 개체 브라우저의 dll 경로는 실제 경로와 일치합니다. 나는 C# 프로그램을 실행할 때C#에서 관리 C++ dll 사용하기

그러나 불평 :

처리되지 않은 예외 : System.IO.FileNotFoundException : 지정된 모듈을 찾을 수 없습니다. (HRESULT 예외 : 0x8007007E)

그 밖의 어떤 작업을해야합니까?

감사합니다.

+0

여기서 몇 가지 코드를 볼 수 있습니까? –

답변

6

다른 어셈블리 또는 dll의 참조가 관리되는 C++ 어셈블리에서 누락되었다고 생각합니다.

+0

사실, 사용 된 DLL 중 하나가 경로에 없습니다. 감사. –

0

관리되는 C++ 어셈블리에는 관리되지 않는 dll을 포함하여 다른 종속성이 있습니까? 참조 된 어셈블리가 종속성을로드하지 못할 경우 런타임에이 오류가 표시됩니다.

0

VS가 설치되지 않은 시스템에서 릴리스 된 응용 프로그램을 실행하고 있습니까?

내가 여기에 비슷한 문제로 실행하기 때문에 난 단지 질문 : 당신이 내 대답 아래로 스크롤하면 당신은 내가 그 날 도움이 무슨 짓을했는지 볼 수 있습니다 Mixed Mode Library and CRT Dependencies - HELP

.

0

C++ 어셈블리가 C# 프로그램과 동일한 폴더에 있는지 확인하십시오. '로컬 복사'속성이 true (C# 응용 프로그램의 C++ dll 참조)로 설정된 경우 자동으로 복사해야합니다.

C++ dll이있는 경우 가장 많이 발생하는 문제는 C++ dll은 찾을 수없는 다른 관리되지 않는 DLL에 의존한다는 것입니다 (예 : C#에서는 관리되지 않는 참조에 대해 알지 못하기 때문에이를 응용 프로그램 폴더에 복사하지 않습니다)). C++ dll에 DependencyWalker을 사용하여 누락 된 종속성을 확인할 수 있습니다.

MSVC 런타임 DLL에 또 다른 문제가있을 수 있습니다. DependencyWalker가 MSVCR * .dll, MSVCP * .dll 등의 파일이 누락되었다고 불평하는지 확인하십시오.