Unicode용 Microsoft 레이어

Microsoft Layer for Unicode

Microsoft Layer for Unicode(MSLU)는 레거시 버전의 Windows용 소프트웨어 라이브러리로, Windows 9x(Windows 95, Windows 98 및 Windows Me)에서 Unicode 인식 프로그램을 쉽게 만들 수 있습니다.UnicoWS(Windows 95/98/Me 시스템용 Unicode) 또는 UNICOWS라는 파일명으로도 알려져 있습니다.DLL.

마이크로소프트는 "소프트웨어 개발자가 단일 유니코드 버전의 애플리케이션을 작성하여 [1]모든 플랫폼에서 올바르게 실행할 수 있도록 Windows 95/98/Me의 Win32 API 위에 레이어를 제공하는 것"이라고 설명했다.이전에는 개발자가 두 가지 버전의 애플리케이션을 제공하거나 런타임에 복잡한 문자열 변환 및 API 결정을 수행해야 했습니다.

현재 유니코WS를 사용하여 기존 [3]버전의 Windows에 대해 Unicode 지원을 기대하는 새로운 소프트웨어를 컴파일할 수 있습니다(부분적으로는 영향력 있는 "UTF-8 Everywhere" [2]선언에 기인합니다).또한 UnicoWS는 링크 시 Windows 9x와 동시에 존재하지 않는 언어로 소프트웨어를 컴파일할 수 있으며,[3] Rust와 같이 Unicode 지원이 필요합니다.

OPENCOW를 포함한 대안이 존재합니다.DLL, "The Open Layer for Unicode for Windows"는 포기 소프트웨어이지만 무료(MPL 1.1/GPL 2.0/LGPL 2.1 라이선스)로 MSLU를 Mozilla에 의해 재실장.

유용성

MSLU는 2001년 3월에 발표되었으며 2001년 7월 Microsoft Platform SDK 에디션에서 당시 새로운 Windows XP RC1용으로 작성된 Unicode 지원 코드의 호환성 계층으로 처음 제공되었습니다.이는 윈도9x의 최고 인기보다 한참 전에 윈도XP의 [4]출시를 불과 한 달 앞두고 출시되었기 때문에 "너무 늦었다"는 개발자들의 비판을 받았다.MSLU는 코드명 Godot붙여졌습니다.Godot은 "Godot"이라는 이름의 남자가 도착하지 못하고 그를 끝없이 기다리는 것을 중심으로 한 연극으로, 이러한 Unicode 호환성 계층은 이미 [4]오래전에 마이크로소프트 내부에서조차 여겨졌기 때문입니다.

구조

일반적으로 Windows API는 다음 기능을 제공합니다.A(ANSI 이스케이프 코드 및 ASCII 문자) 및W대부분서브루틴의 ('와이드' 문자)버전입니다.Windows 9x 에서는A버전이 실장되어 콜을 시도하고 있다.W버전이 실패하고 함수가 구현되지 않았음을 나타내는 오류 코드가 표시됩니다.Windows NT 라인의 운영체제에서는A그리고.W버전이 구현됩니다(단, 일반적으로 운영체제는 내부에서만 구현됩니다).W네이티브 버전 및Aversion은 보통 에 대한 번역 트렁크입니다.W버전)을 참조해 주세요.

UNICOWS를 추가합니다.KERNAL32 이전의 링크 명령줄에 대한 LIB.LIB, ADVAPI32LIB 또는 기타 지원되는 Win32 시스템링크 라이브러리는 참조된 기호를 UNICOWS에서 제공하는 기호해결합니다.대신 LIB를 사용합니다.

실행시에 와이드 문자 함수가 처음으로 호출되면, UNICOWS 함수 스텁이 됩니다.LIB는 먼저 제어를 받아 Windows 95/98/Me 시스템에서 실행 중인지 확인합니다.

  • 이 경우 UNICOWS는 동적으로 로드됩니다.DLL(아직 로드되지 않은 경우) 및 제어 권한을 해당 DLL 내의 대응하는 thunking stub에 전달합니다.thunking stub은 와이드 문자의 인수를 ANSI 문자열로 변환한 후 네이티브를 호출합니다.A를 사용하여 반환되는 문자열을 와이드 문자 형식으로 변환합니다.
  • OS가 네이티브로 지원하는 경우W버전(즉, Windows NT 라인의 운영체제)이후 함수 스텁은 인메모리 심볼 테이블을 업데이트하여 향후 콜이 네이티브를 직접 호출하도록 합니다.W오버헤드가 없는 버전입니다.

이 기술을 통해 응용 프로그램이 MSLU에 대해 링크되면 Windows 95/98/Me 시스템만 UNICOWS에 의존해야 합니다.실행 시 DLL 및 기타 모든 버전의 Windows에서는 처음 실행 시 약간의 성능 저하만 발생합니다.W함수가 호출됩니다.

일반적인 문제는 일부 업데이트 패키지 또는 제거 프로그램에서 OLE 라이브러리(OLEACC)이름을 바꾸거나 삭제할 때 발생합니다.DLL, OLEDLGDLL)은 UNICOWS의 의존관계입니다.DLL.[5] 이로 인해 OpenOffice.org 등의 일부 응용 프로그램에서 "필요한 라이브러리 중 하나를 찾을 수 없기 때문에 응용 프로그램을 시작할 수 없습니다."라는 오류 메시지가 표시됩니다.이것은, UNICOWS 되어도 발생합니다.의존관계가 없으면 기동할 없기 때문에, DLL이 시스템에 인스톨 됩니다(「DLL hell」도 참조).

레퍼런스

  1. ^ "The Microsoft Layer for Unicode on Windows 95/98/Me Systems". Global Development and Computing Portal. Microsoft. Archived from the original on 16 April 2003. Retrieved 25 April 2019.
  2. ^ Radzivilovsky, Pavel; Galka, Yakov; Novgorodo, Slava (2010). "The UTF-8 Everywhere Manifesto". Retrieved 23 December 2021.{{cite web}}: CS1 maint :url-status (링크)
  3. ^ a b Duda, Dennis (26 May 2020). "Compiling Rust binaries for Windows 98 SE and more: a journey". seri.tools. Retrieved 23 December 2021.{{cite web}}: CS1 maint :url-status (링크)
  4. ^ a b Kaplan, Michael Scott (12 February 2005). "Why/how MSLU came to be, and more". Sorting it All Out. Microsoft Developer Network Blogs. Archived from the original on 4 June 2011. Retrieved 22 December 2021. (Sometimes people ask less charitable versions of the question, like Why did Microsoft wait for so long to make MSLU? or Why did you wait to make MSLU until it was too late? but I'll stick to the nice version of the question!).
  5. ^ Wine (software) authors (26 October 2021). "Wine: dlls/unicows/Makefile.in". Wine (version 6.0.2). The Wine Project. Retrieved 23 December 2021 – via Fossies (The Fresh Open Source Software Archive).{{cite web}}: CS1 maint:url-status(링크) CS1 maint:작성자 파라미터(링크) 사용

외부 링크

마이크로소프트

오픈 소스 대체 제품

  • libunicows : MIT 라이선스의 UNICOWS 버전만 제공합니다.LIB 링크 라이브러리. 단, Microsoft가 제공하는 UNICOWS가 필요합니다.DLL 또는 Mozilla의 OPENCOW.DLL.
  • opencow(이전 MZLU): DLL과 LIB 링크 라이브러리가 모두 MPL 1.1/GPL 2.0/LGPL 2.1로 재작성됩니다.원래는 Mozilla를 위해 또는 Mozilla에 의해 이루어집니다.