반응형

원인

필요한 헤더파일이 안불러와진 것..

 

문제

WinRT로 프로그램을 만드는 중에.. 어떤 오류가 발생했다.. 

심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태
오류 C3779 'winrt::impl::consume_Windows_UI_Input_IPointerPoint<winrt::Windows::UI::Input::IPointerPoint>::Position': 'auto'을(를) 반환하는 함수를 정의되기 전에 사용할 수 없습니다.	ScaraGUIController	C:\Users\PKDPMS0328\source\repos\ScaraGUIController\ScaraGUIController\MainPage.cpp 22

이 오류는 WinRT 부분에서만 일어나는 오류 같은데.. 블로그나 해결 방법은 잘 안나와 있어서.. 일단 마이크로소프트 문서에 검색해보니..

https://learn.microsoft.com/ko-kr/cpp/error-messages/compiler-errors-2/compiler-error-c3779

 

컴파일러 오류 C3779

자세한 정보: 컴파일러 오류 C3779

learn.microsoft.com

해결 방법은 다행히 있었다..!

 

해결방법

어쨋든 내 코드의 경우 

#include <winrt/Windows.UI.Xaml.Input.h>

void function(winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e) {
	winrt::Windows::UI::Input::PointerPoint point = e.GetCurrentPoint(ControlJoint());
    
    	Point_X().Text(winrt::to_hstring(point.Position().X));
    	Point_Y().Text(winrt::to_hstring(point.Position().Y));
}

대충 이런식의 코드인데.. 여기에서 오류가 난 부분은 point.Position().X 저쪽 부분이다..

여기에서 문제의 저 오류에 winrt::Windows::UI::Input::IPointerPoint 이런게 뭐가 문제가 있다면서 알려주는데

이것을 헤더파일에 추가하면 문제가 해결되는 것이였다..!

 

그래서 나의 경우에는 IPointerPoint는 Input 헤더 안에 있는 것이기 때문에 

#include <winrt/Windows.UI.Input.h> 이 코드로 헤더파일을 추가해서 해결했다..!

#include <winrt/Windows.UI.Xaml.Input.h>
#include <winrt/Windows.UI.Input.h> // 오류 해결에 필요한 헤더파일

void function(winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const& e) {
	winrt::Windows::UI::Input::PointerPoint point = e.GetCurrentPoint(ControlJoint());
    
    	Point_X().Text(winrt::to_hstring(point.Position().X));
    	Point_Y().Text(winrt::to_hstring(point.Position().Y));
}

 

결론

'winrt::impl::consume_Windows_UI_Input_IPointerPoint<winrt::Windows::UI::Input::IPointerPoint>::Position': 'auto'을(를) 반환하는 함수를 정의되기 전에 사용할 수 없습니다.

 

이런식으로 오류가 뜰 경우

1.  <winrt::Windows::UI::Input::IPointerPoint> 부분이 자신의 오류에서 뭐인지 찾는다.

2. winrt::Windows::UI::Input::IPointerPoint 이것에 해당하는 헤더파일을 찾는다. 보통은 맨 뒤에꺼 지운게 아마 헤더파일일 꺼다.. winrt::Windows::UI::Input 여기까지, 그리고 헤더파일로 할 경우 winrt/Windows.UI.Input.h

3. 찾은 헤더파일을 추가해서 문제를 해결한다!!!!

 

근데.. 애초에 Input::PointerPoint가 필요한 헤더파일이 winrt/Windows.UI.Input.h였다.. winrt/Windows.UI.Xaml.Input.h가 아닌... 그냥.. 필요한 헤더파일을 안불러왔었던 것.. 

반응형

+ Recent posts