2009-07-21 3 views
1

Windows XP 시스템에서 C# 어셈블리의 코드를 호출하는 Mangaged C++ 라이브러리를 작성하고 있습니다. 불행하게도, 최대한 빨리는 C# 어셈블리의 기호를 참조하는이 오류와 함께 실패 ++ 라이브러리 관리 C 실행을 시작으로 (필자는 XP 충돌 대화 상자에서이 복사) :Managed C++ DLL에서 C# 어셈블리를 사용할 때 크래시가 발생합니다.

EventType : clr20r3 
P1 : treeviewdemo.exe 
P2 : 0.0.0.0 
P3 : 4a5d6d62 
P4 : system.windows.forms 
P5 : 2.0.0.0 
P6 : 4889dee7 
P7 : 12fc  
P8 : ac 
P9 : system.io.filenotfoundexception  

manged했던 C++ 라이브러리 그냥 기본적으로 :

#using "C:\\MyCSharpAssembly.dll"; 

__declspec(dllexport) void callMangagedCode() { 
    ManagedObject ^o = nullptr; 
} 

'# 사용'자체가 어떤 문제가 발생하지 않는 것,하지만 최대한 빨리 기호는 C#을 DLL을 형성 사용하기 시작, 나는이 문제를 얻는다. 아무도 무슨 일이 일어나는지 알아?

일부 DLL은 찾지 못하고 있지만 어디서 볼 수 있는지 전혀 알 수 없습니다.

+0

다른 C# 응용 프로그램에서 메서드를 호출하려고 했습니까? 오류가 재현 가능하면 더 좋은 예외 정보를 얻으려면 .. – cwap

답변

5

동일한 경로에서 MyCSharpAssembly.dll의 모든 종속성을 사용할 수 있습니까? 확실하지 않은 경우 ILDasm 도구에서 C-Sharp 어셈블리를로드하여 종속성을 확인하십시오.

정상 검사로이 C-Sharp DLL을 다른 C-Sharp 실행 파일에서로드 할 수 있는지 여부도 확인하십시오.

+0

고마워! 실제로 MyCSharpAssembly.dll의 종속성 중 하나임이 밝혀졌습니다. 그러나 문제가 더 복잡했다 : 종속성을 DLL과 동일한 경로에 있어야하지만 그들은 .exe 파일의 경로에 있어야했습니다 (나는 이것이 'APPBASE'속성과 관련 있다고 가정합니다.). 그것이 올바른 방향으로 나를 가리킨 이후이 대답을 수락하십시오. –

0

파일을 찾을 수 없습니까?

C# 어셈블리를 찾을 수 없습니까?

는 창 또는 SYSTEM32에 복사 실패,

0

을 등록하려고하는 경우가

시도가 당신이 C#을 어셈블리 소스 코드에 액세스 할 수 있습니까? 디버거에서 관리되는 C++ 코드를 실행할 수 있습니까? 예외의 스택 추적을 보는 것은 가치가 있습니다. 예외가 발생할 때 어떤 일이 벌어지고 있는지 더 많은 힌트를 줄 수 있습니다.

나는 충돌이 당신이하고있는 작업과 관련이 있다고 생각합니다. Aamir 언급대로 다른 가능성은 C# 어셈블리의 종속성이 될 수 있습니다 ...

관련 문제