2011-07-05 10 views
2

관리되지 않는 C++ 코드에서로드하려고하는 .NET COM DLL이 있습니다. 나는 "시스템이 지정된 파일을 찾을 수 없습니다"라는 오류와 함께 실패하는 내 코드에서 CoCreateInstance을 찾으려고합니다. HRESULT 값은 0x80070002입니다. 구성 요소의 등록에 문제가 있는지 여부를 확인하기 위해 테스터에서 동일한 코드를 시도했습니다. 인스턴스를 올바르게 만들 수 있습니다. 또한 이상하게도 내 응용 프로그램의 디버그 모드에서 CoCreateInstance은 성공하지만 릴리스 모드에서만 실패합니다. 아무도 무엇이 잘못 될 수 있는지 또는 문제의 근본 원인을 어떻게 찾을 수 있습니까? 종속성 워커에서 COM dll을 이미 열었으며 오류가 표시되지 않았습니다. 어떤 도움이라도 대단히 감사하겠습니다.CoCreateInstance가 "지정한 파일을 찾을 수 없습니다."오류와 함께 실패합니다.

+0

정확히 어떻게 .NET 어셈블리를 등록 했습니까? – sharptooth

+0

@sharptooth : "RegAsm.exe" "C : \ A.Core.dll"/ codebase'와 같은 경고 메시지가 나타납니다. "RegAsm : warning RA0000 :/codebase를 사용하여 서명되지 않은 어셈블리를 등록하면 어셈블리가 동일한 컴퓨터에 설치할 수있는 다른 응용 프로그램./codebase 스위치는 서명 된 어셈블리에서만 사용하도록되어 있습니다. 어셈블리를 강력한 이름으로 지정하고 다시 등록하십시오. "/ codebase 스위치없이 시도했습니다. – Asha

+0

'/ codebase'를 사용하는 것이 옳습니다. 가장 좋은 방법은 프로세스 모니터를 시작하고 정확히 어떤 파일이 아닌지 확인하는 것입니다. 발견 된 이유와 이유는 무엇입니까? – sharptooth

답변

2

COM은 일반적으로 ERROR_FILE_NOT_FOUND을 생성하지 않습니다. 그러나 예를 들어 종속 어셈블리를 찾으려고 할 때 일반적으로 CLR이 일반적입니다. 릴리스 빌드 디렉토리에서 regasm/codebase를 실행하십시오. Fuslogvw.exe를 사용하여 어셈블리 확인 문제를 추적하십시오.

+0

감사합니다. – Asha

+1

고맙습니다.. NET에서 초보자이며 Fuslogvw.exe 도구에 대해 몰랐습니다. 정말 도움이되었습니다. 문제는 app.config 파일에 잘못된 .NET 버전이 지정되어 있기 때문입니다. – Asha

관련 문제