2010-03-23 6 views
1

C++ DLL에서 C# DLL을 호출했습니다. Qt를 사용하고/clr 컴파일러 옵션이 작동하지 않아 다리에 대한 자습서를 this 따라갔습니다.C# DLL을 사용할 때 C++ 응용 프로그램을 초기화하지 못했습니다 (0xc0000005)

그래서 C# DLL에 링크하고 브리지 클래스와 내 C++ programm에 대한 인터페이스를 노출하는 네이티브 클래스를 포함하는 VS2008 프로젝트 (/ clr로 컴파일 됨)가 있습니다. 다른 VS2008 프로젝트 (.net 항목 없음)는 네이티브 클래스 (정적으로 링크 됨)를 호출합니다.

몇 가지 문제가 있었지만 지금은 적어도 컴파일해야합니다. 그러나이 프로그램을 실행하려고하면 네이티브 클래스를 사용하려고 할 때 초기화시 (0xc0000005) 오류가 발생합니다. 초기화시이 문제가 발생하기 때문에 어떤 DLL을 초기화하지 못하는지조차 알지 못합니다. 모든 DLL이 올바른 위치에 있어야합니다.

힌트가 있습니까? 감사합니다.

+2

'0xC0000005'는 액세스 위반입니다. – sbi

+0

컴파일러 옵션이 작동하지 않았습니다.이 문구를 출력 할 때주의해야합니다. 사실 일 가능성은 거의 없습니다. –

+0

OK, 아마도 "컴파일러 옵션이 작동하지 않았습니다"라는 것은 정확하지 않았습니다. 더 정확하게 : Qt의 __fastcall이/clr과 호환되지 않는다는 경고 메시지가 나타납니다. – Simon

답변

3

네이티브 클래스를 호출 한 프로젝트가 내 exe에 정적으로 링크되어 있었지만 작동하지 않았습니다. 나는 그것을 DLL로 바꿨고 지금은 효과가있는 것처럼 보인다.

좀 더 조사하겠습니다.

+0

프로젝트를 DLL로 변환하면 문제가 해결되지만 그 이유는 분명하지 않습니다. – Simon

4

비슷한 문제가 있습니다. C++ 및/clr을 사용하는 Qt 나는 관리되는 클래스에 대한 래퍼를 만든 다음 Qt를 가진 프론트 엔드를 만들어 나는

이 bytes.com에이 토론 한 번 봐 ... 경고를 얻을 : __fastcall functions in a static lib, cant be called from managed code?

남자 정적 관리하는 것이이 말한다 /clr으로 컴파일 된 클래스는 fastcall과 호환되지 않습니다.

관련 문제