2011-08-15 2 views
2

프로그램의 핵심 기능을 분리하여 Linux로 포팅하는 것이 더 쉬운가 아니면 Linux에서 실행되는 원래 MFC 프로그램을 가져 오기 위해 MFC 기능을 둘러싼 래퍼를 작성하는 것이 더 쉽습니까?Linux로 포트하거나 MFC 용 래퍼를 작성 하시겠습니까?

예 :

, 기본적인 대화 상자 기반 MFC 응용 프로그램 (여러 대화 상자 창을) 가지고는 핵심 분석 코드의 수정없이 리눅스 명령 줄에서 실행 얻을. 주요 목표는 분석 코드를 수정하지 않는 것입니다. 이를 염두에두고 MFC 응용 프로그램이 분석 코드에 사용하는 것과 동일한 파일을 사용하는 프로그램의 명령 줄 버전을 작성하십시오. 분석 코드에서 사용되는 MFC 클래스 및 함수와 똑같이 작동하는 코드를 작성하십시오. 사실, 그 클래스에 대한 MFC 소스 코드로 시작하여 모든 Microsoft 특정 항목 (MFC, ATL 등)을 잘라내어 래퍼 코드에 사용하십시오.

은 핵심 분석 코드 걸릴 Qt는 명령 행 프로젝트에 연결 : 대

. MFC 또는 Win32 기능의 경우 Qt 또는 STL/Boost에서 지원되는 동일한 플랫폼 간 호환 기능으로 대체하십시오.

답변

3

Winelib에 대해 컴파일 해보십시오. 대부분의 기능을 다시 작성할 필요가 없습니다.

는 OS/플랫폼에 의존 층
운영체제 추상화 계층,
: 나는 확실히 잘 정의 된 레이어의 소스 코드를 분리하는 것이 시간과 자원을 감안할 때 귀하의 의견에 비추어

, OS 독립적 미들웨어 &
UI 레이어

이것은 모든 소프트웨어 응용 프로그램에서 발생할 수있는 가장 기본적인 계층화 된 아키텍처입니다. 그렇게하면 새로운 운영 체제/플랫폼으로 이식해야 할 때마다 OS/platform dependent layer을 작성하면 나머지 모든 레이어는 변경되지 않습니다. 마찬가지로 UI 프레임 워크를 변경해야 할 필요가있을 때 UI layer을 쉽게 수정할 수 있으며 나머지 스택은 변경되지 않습니다.

물론 이러한 솔루션은 일회용으로 충분한 시간과 리소스가 필요하지만 한 번 사용하면 훨씬 쉽게 사용할 수 있습니다.

+0

죄송합니다.이를 위해 Wine을 사용할 수 없습니다. 나는 그것을 일찍 언급해야했다. –

1

두 번째 옵션을 수행하는 데 충분한 시간과 리소스가 있으면 깨끗한 접근 방식 인 것처럼 보입니다. 빠른 & 더러운 솔루션이 필요한 경우 @Als의 제안을 따르고 Winelib을 사용할 수 있습니다.

그런데 Qt와 STL/Boost는 멀티 플랫폼 라이브러리이므로 장래에 "포팅 된"버전을 멀티 플랫폼 버전으로 사용하여 Windows에도 배포하고 MFC 종속성을 제거합니다 (장점 : 단점 : Qt는 상당히 의존적입니다.)

+0

양자 택일로, Qt를 전혀 사용할 수 없었습니다. 이는 오버 헤드를 확실히 줄여줍니다. –

+1

GUI를 완전히 삭제하고 필요한 다른 모든 MFC 기능이 Stdlib 또는 Boost에서 동일한 기능을 수행한다면 확실히 성공할 수 있습니다. 하지만 중요한 것은 분석 핵심 코드를 분리하여 Stdlib/Boost 기능 만 사용하도록 설정 한 다음 각 플랫폼에서 인터페이스를 연결할 수 있다는 것입니다. –

관련 문제