2013-06-22 5 views
0

내 C++ 크로스 플랫폼 (Windows, Linux, Mac) OpenGL 응용 프로그램이 초기화되지 않아서 사용자가 무엇이 잘못되었는지 알 수 없으면 오류 메시지를 표시하려고합니다.크로스 플랫폼 오류 메시지

내 아이디어 지금까지 : 성병

  1. 쓰기 오류 :: cerr
    • 문제 : 콘솔 항상 윈도우에 표시, 심지어 : 그것에서
    • 문제를 실행하지 않을 때 쉘은 리눅스에 표시되지
  2. 사용 GUI 라이브러리
      (콘솔 응용 프로그램으로 컴파일 된 경우) 필요하지 않은 경우 0
    • 문제점 : 나머지는 OpenGL을 사용하여 표시되므로 잔인합니다. GLFW을 사용하여 창/컨텍스트를 얻습니다.
  3. 플랫폼 별 구현 및
    • 문제가 #ifdef : 나중에

당신이이 문제를 해결 할 방법은 잠재적으로 네이티브 API를 혼란에 원하는 오히려 않을 것이다 지원을 확대해야 ?

답변

1

그래픽 사용자 인터페이스 솔루션은 실제로 좋은 일이지만 문제는 당신이하지 않는 한 다른 의존성을 필요 것이 참으로 아래

... 당신은 단지 코드 한 기능을 제안 수동으로 무엇을 각 플랫폼은 각 플랫폼에 대한 GUI 코드를 사용하여 오류를보고합니다.

기본 플랫폼에 대한 오류 기능 보고서 중 하나만 구현 한 다음 이식을 통해 다른 버전을 작성하십시오. 이미 모든 플랫폼에서 직접 작업 한 경우 모든 플랫폼에서 한 번 수행하고 함께 사용하십시오.

메시지를 신고하는 것만으로도 문제가 너무 길거나 길지 않아야합니다.

K.I.S. 원리.

(참고 : 메시지가 확실히 더 안전 할 것 대신에 문제가 발생했을 때의 다음 시작에 표시 할 수 있습니다) 밝혔다되고 그건


, 미래에 좀 더 복잡한 오류를 할 수 있습니다 보고 시스템. 이 경우 오류 보고서 코드를 별도의 프로젝트로 개발하는 데 투자 할 가치가 있습니다.이 프로젝트는 자체 종속성을 가지며 주 프로젝트의 모든 문제 (통신 방식에 관계없이)에 의해 트리거됩니다. 이 경우에는 Qt와 같은 종속성을 가지고 있어도 괜찮습니다. (헤비급이기는하지만 ...) 또는 wxWidgets (일종의) 또는 GTK (내 경험은 긍정적이지는 않지만 간단한 일은 괜찮습니다). 가볍고 단순하도록 설계된 하나의 GUI 프레임 워크는 FLTK이므로 응용 프로그램 옆에 앉을만큼 간단하고 가벼울 수 있습니다.

1

wxWidgets (또는 유사한 크로스 플랫폼 프레임 워크). 또는 당신을 위해 ... 3.

+0

오류 메시지 상자가 너무 무겁지 않습니까? – acrilige

+0

처음에는 메시지 상자 일 뿐이므로 이후에 더 많은 창을 보게 될 것입니다 ... – user1764961

+0

그런 경우 #ifdef로 몇 줄의 코드로 충분합니다. – user1764961