2011-09-19 4 views
0

가능한 중복 :
MFC Dll with COM InterfaceDLL MFC 응용 프로그램에서 작동하지만 .NET에서

내가 VC6로 작성된 오래된 DLL이있다. .NET Winforms 응용 프로그램에서이 작업을 수행하려고합니다. DLL을 가져 와서 함수를 호출했습니다. 이 작품은, 내가 DLL을 깰 수있는 모든 것을 제대로 전달되지만 나중에 CoCreateInstance와 COM 구성 요소를 만들려고 실패 DLL이 실패합니다. 이 오류는 액세스 위반이 있습니다. 전달 된 동일한 매개 변수를 사용하여 MFC 응용 프로그램에서 사용되는 동일한 DLL이 잘 작동합니다.

MFC가 아니라 .NET에서이 오류가 발생하는 이유는 무엇입니까?

답변

0

. NET 스레드가 멀티 스레드 아파트 (MTA)에있는 동안 COM 구성 요소는 아마도 단일 스레드 아파트 (STA)가 필요합니다. 특정 STA 스레드에서만 DLL을 호출 해보십시오.

+0

.NET에서 어떻게 보장 할 수 있습니까? – Jonnster

+0

이제 DLL을 자체 스레드에서 호출했습니다. Start를 호출하기 전에 SetApartmentState를 호출하여이 스레드를 STA로 설정합니다. 그러나 차이는 없습니다. – Jonnster

관련 문제