컴파일러 오류 C2743Compiler Error C2743

' type ': __clrcall 소멸자 또는 복사 생성자를 사용 하 여 네이티브 형식을 catch 할 수 없습니다.'type' : cannot catch a native type with __clrcall destructor or copy constructor

/Clr 을 사용 하 여 컴파일된 모듈에서 네이티브 형식의 예외를 catch 하려고 했지만 형식의 소멸자 또는 복사 생성자가 __clrcall 호출 규칙을 사용 합니다.A module compiled with /clr attempted to catch an exception of native type and where the type's destructor or copy constructor uses __clrcall calling convention.

/Clr을 사용 하 여 컴파일하면 예외 처리에서 네이티브 형식의 멤버 함수를 __cdecl 하 고 __clrcall하지 않을 것으로 예상 합니다.When compiled with /clr, exception handling expects the member functions in a native type to be __cdecl and not __clrcall. __clrcall 호출 규칙을 사용 하는 멤버 함수를 사용 하는 네이티브 형식은 /clr로 컴파일된 모듈에서 catch 할 수 없습니다.Native types with member functions using __clrcall calling convention cannot be caught in a module compiled with /clr.

자세한 내용은 /clr(공용 언어 런타임 컴파일)을 참조하세요.For more information, see /clr (Common Language Runtime Compilation).

예제Example

다음 샘플에서는 C2743를 생성 합니다.The following sample generates C2743.

// C2743.cpp
// compile with: /clr
public struct S {
   __clrcall ~S() {}
};

public struct T {
   ~T() {}
};

int main() {
   try {}
   catch(S) {}   // C2743
   // try the following line instead
   // catch(T) {}

   try {}
   catch(S*) {}   // OK
}