문제

C#에 대화 상자를 작성하라는 지시를 받았으며, 이는 관리되지 않는 C ++ DLL에서 인스턴스화해야합니다. C ++ 프로젝트에 관리 된 C ++ 클래스를 추가 한 다음 관리되는 C ++ 클래스에서 C# DLL을 호출하여 코드의 다른 장소에서이를 수행합니다. 그러나 나는 그것이 내가해야 할 곳에서 나에게 효과가 없다는 것을 알게된다. C ++ DLL이 MFCactiveX 프로젝트이기 때문에 생각합니다. 이 프로젝트의 파일에 CLR을 설정하자마자 더 이상 올바르게 등록되지 않습니다. 등록하려고하면 세 가지 오류가 발생한 다음 등록 된 메시지가 표시됩니다. 그러나 사용하려고 할 때 0x80040111 "ClassFactory는 요청 된 클래스"오류를 제공 할 수 있습니다. 누구든지 문제가 무엇인지 아는 사람이 있다면 크게 감사하겠습니다. 나는 이것 (선호)을 달성하거나 불가능하다는 것을 증명해야합니다.

감사

도움이 되었습니까?

해결책

MFCactiveX 프로젝트가 어떻게 C# 클래스를 이런 식으로 만들지 못하게하는지 알 수 없습니다. 단순히 관리 클래스를 추가 할 수 없다면.

관리되는 C ++ 클래스 트릭을 작동시킬 수없는 경우 다른 옵션은 com을 사용하는 것입니다. C# 프로젝트에 COM 객체로 일종의 공장을 등록 할 수 있습니다. 다음 인터페이스를주십시오

[ComVisible(true)]
[Guid("babe87fc-1467-4913-a1d3-47eeedf1afb5")]
public interface IDialogFactory {
  void Create(); 
}

또한 후원 클래스도 만들어야합니다. 그러나 관리 된 어셈블리를 등록하고 COM을 사용하여 액세스 할 수 있습니다.

다른 팁

이제 "regsvr32"대신 "regasm"에 등록해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top