2011-07-26 12 views
7

Microsoft Visual Studio 2005에서 프로그램을 작성했으며 정상적으로 작동합니다.Windows 98에서 Visual Studio 2005로 컴파일 된 응용 프로그램을 실행할 수 있습니까?

내가 겪고있는 문제는 Windows 98을 실행하는 데 필요한 컴퓨터입니다. 지금까지 내가 vC++ 용 re-distributable을 설치해야한다는 것을 알 수 있습니다. Windows 98에 재배포 가능 패키지를 설치할 수 있습니까? 아니면 Windows 98에서 다시 사용할 수 있습니까?

+2

Windows 98을 사용해야하는 진심 어린 애도 : –

+1

Windows 98 ... 행운을 빌어 요. – Eddie

+1

재배포 가능 항목을 설치해야합니다. 그렇습니다. 작동하면 작동합니다. 그렇지 않은 경우 MS는 지원되지 않는다고 알려줄 것입니다. –

답변

6

예, VS 2005로 컴파일 된 응용 프로그램은 Windows 98 및 Me에서 완벽하게 작동합니다. 나는 그들 중 몇 가지를 직접 실행했고, VS 2005를 계속 유지하고 정확히이 목적으로 설치했습니다. Version 2005 of the CRT redistributable는 트릭을 사용하면 멀티 바이트 문자 세트 (MBCS)에 대한 응용 프로그램을 컴파일해야합니다 것입니다까지 다시 윈도우 98

로 지원됩니다. 기본 프로젝트 설정 인 유니 코드로 컴파일 할 때 작동하지 않습니다. Windows 9x 플랫폼은 추가 도움없이 유니 코드를 지원하지 않습니다. 프로젝트 설정을 바꿀 수 있어야합니다.하지만 유니 코드를 사용하도록 코드를 작성한 경우 문제가 발생합니다.

이 때문에 유니 코드 빌드에서 선호하는 와이드 문자가 아닌 tchar.h에 정의 된 일반 문자 유형과 함수를 사용해야합니다. 항상 TCHAR 유형 (또는 LPTSTR 또는 LPCTSTR 유형)을 사용하여 문자열을 정의하십시오. 조건은 wchar_t 또는 char으로 조건에 따라 정의됩니다. 폭이 좁은 문자 또는 좁은 문자에만 해당하는 문자열 조작 함수가 아닌 _tcs...으로 시작하는 문자열 조작 함수를 사용하십시오. 함수를 호출 할 때는 항상 A 또는 W 접미사로 끝나는 ANSI 또는 광범위한 특정 유형이 아닌 일반 typedef 된 버전을 호출해야합니다.

처음부터 해보지 않은 경우 돌아가서 해결해야 할 작업이 많을 수 있습니다. 이 경우 원래 지원되지 않는 레거시 Windows 9x 운영 체제에서 유니 코드 기능을 호출 할 수있는 추상화 계층을 제공하는 Microsoft Layer for Unicode on Windows 95/98/ME Systems을 살펴볼 수 있습니다.

유니 코드/MBCS 이외에는 Windows 98 시대에 Win32 API에 존재하지 않는 기능을 호출하지 않는다는 점만주의해야합니다. Microsoft가 Windows 98을 더 이상 지원하지 않기 때문에 온라인 MSDN 설명서에서 "최소 지원 클라이언트 버전"에 대해 더 이상 신뢰할 수 없습니다. SDK 문서의 모든은 지원되는 최소 버전이 현재 Windows 2000이고 그게 옳지 않다는 것을 당신은 알고 있습니다.전체 API는 W2K만큼 늦게 소개되지 않았습니다. 정확한 정보를 얻으려면 이전 버전의 SDK 설명서를 구해야합니다. VS 2005의 설치와 함께 무엇이 좋을 것입니다. 거기에있는 정보는 최소한 Win 98까지 돌아가며, 95가 아니라면 (정확하게 기억하지 못합니다). 당신은 당신이 그들이 사용할 수, 동적 그들을 전화 각별히주의해야합니다 있습니다 새로운 시스템에서 실행 때 윈도우 98에서 다시 존재하지 않는 함수를 호출 할 인스턴스의

대신 응용 프로그램의 DLL 가져 오기 테이블 (일반적으로 링커가 자동으로 수행하는 작업)에 추가하는 것이 좋습니다. 즉, 함수 포인터를 직접 정의하고 LoadLibraryGetProcAddress 함수를 사용하여 함수 포인터를 호출하는 것입니다. 재미 있지는 않지만 일을합니다.

또는 라이브러리를 "지연로드"(프로젝트의 속성 확인)하도록 링커를 구성 할 수 있습니다. 이 방법이 훨씬 편리하지만 분명히 만 대상 운영 체제에서 사용할 수있는 함수를 호출해야합니다. 그렇지 않으면 응용 프로그램이 중단됩니다.

어느 쪽이든 GetVersionEx function은 현재 호스트 운영 체제에 대해 알아야 할 모든 정보를 알려주기 때문에 코드가 다른 경로를 사용할 수있는 경우 새로운 기능을 호출하거나 그렇지 않은 경우 이전 경로로 되돌릴 수 있습니다. 환경. 따라서 레거시 운영 체제에 대한 어느 정도의 지원이 적절한지를 유지하면서 새로운 시스템에서 새로운 기능을 지원할 수 있습니다. 이 작업이 올바르게 완료되면 코드베이스에 많은 if 문이 있습니다. :-)

+0

2015 년 미래의 부록 - KernelEx를 사용하면 98SE에서 최신 소프트웨어를 실행할 수 있으며 기존 소프트웨어를 완전히 실행하지 않으면 VS2005와 같은 최신 개발 소프트웨어에서도 호환성 트랩을 많이 피할 수 있습니다 (if 그것은 XP 용으로 개발되었습니다 - 그보다 더 새로운 것을 요구한다면 당신의 기회는 줄어 듭니다). – Yushatak

1

시스템 요구 사항을 확인 했습니까? this link에 따르면 Windows 98이 정상적이어야합니다.

3

예, 할 수 있습니다 http://www.microsoft.com/download/en/details.aspx?id=3387 (Microsoft Visual C++ 2005 재배포 가능 패키지 (86))

지원하는 운영 체제 : Windows 2000 서비스 팩 3, 윈도우 98, Windows 98 Second Edition의, 윈도우 ME, 윈도우 Server 2003, Windows XP 서비스 팩 2

1

응용 프로그램과 함께 CRT를 배포하는 것 이외에 여러 가지가 있습니다. 프로그램에서 사용하는 모든 기능은 Windows98에서 사용할 수 있어야합니다. MSDN에서 찾을 수있는 모든 기능에 대해 "최소 지원 클라이언트"를 찾을 수 있습니다. 이것은 까다 롭습니다 ...
CRT 문제를 해결하려면 응용 프로그램을 정적으로 연결할 수 있습니다 (/ MT 링커 옵션). 바이너리가 더 커지지 만 효과가 있습니다.

+1

그 정보는 더 이상 정확하지 않습니다. "최소 지원 클라이언트"는 해당 함수 호출을 지원하는 최소값이 아니라 Microsoft가 여전히 지원하는 최소 클라이언트 운영 체제를 의미합니다. 많은 함수가 Windows 98에 존재하며 문제없이 호출 할 수 있습니다. 그러나 Microsoft는 Windows 98을 더 이상 지원하지 않기 때문에 최소 지원 클라이언트로 Windows 2000을 나열합니다. 레거시 운영 체제에 대한 지원에 대한 정확한 정보를 얻으려면 이전 버전의 MSDN 설명서를 구해야합니다. VS 2005 설치와 함께 제공되는 MSDN 도움말은 정상적으로 작동합니다. –

+0

사실. 업데이트 된 정보를 주셔서 감사합니다 – cprogrammer