2012-01-20 3 views
1

사람들 중 일부는 http://suckless.org/과 그들의 유닉스 도구에 대해 들어 보셨을 것입니다. 기본적으로, 그것들은 한 가지 일을하는 것을 목표로하지만 가능한 한 간단하고 자원 - 가벼우면서도 잘하는 프로그램입니다.작은 Windows 프로그램을 만들 때 어떤 라이브러리를 사용할 수 있습니까?

저는 C++을 사용하여 Windows에서이 프로그래밍 스타일을 재현 할 방법을 찾으려했지만 모든 라이브러리는 해당 기능과 관련하여 큰 바이너리를 생성합니다. 예를 들어 Qt 중 가장 단순한 것조차도 일반적으로 수 메가 바이트 큽니다. 배포 가능 제품과 함께 패키징 의존성을 저지르는 것이 아니지만 그 수준으로하고 싶지는 않습니다.

바이너리 크기는 내 주요 목표 중 하나가 아니지만 단순함은 물론이고 이러한 큰 라이브러리는 단순하지 않고 건설적인 것입니다. 바이너리 크기가 가장 중요하다면 kkreiger 나 malware처럼 런타임 압축을 사용할 수 있습니다.

아마도 ISO 표준 C++ 라이브러리 만 사용하고 작은 단일 용도의 응용 프로그램을위한 소켓이나 네트워킹 시스템을 재구성하는 것은 아무도 고민하지 않으려 고하는 것이 아닙니다.

Windows 개발자가 모든 사람과 할머니가 쉽게 접근 할 수 있도록 할 수있는 일반 퍼프 하우스 라이브러리가 있다고 생각했지만 현재는 그러한 것이 있는지 모릅니다. 유닉스 철학을 준수하지만 Windows 타겟에 적합한 코드를 작성하는 데 사용할 수있는 것은 무엇입니까?

+4

Erm, Win32 API? 당신은 그보다 훨씬 낮은 레벨을 얻을 수 없습니다 ... –

+0

무엇을! Windows API의 존재를 어떻게 잊었습니까? MFC도있다.그것을 대답으로 옮기면 받아 들일 것입니다. – enthdegree

답변

2

Win32 API를 직접 대상으로 지정해야합니다. 그것보다 훨씬 낮은 레벨을 얻을 수는 없습니다. Windows 환경에서는 모든 것이 직접 또는 간접적으로 소위 말하는 "표준 C++ 라이브러리"와 같은 SDK 기능을 포함합니다.

또는 Win32 API에 비해 상대적으로 얇은 C++ 래퍼 인 MFC 또는 WTL과 같은 것을 사용할 수 있습니다. 클래스 라이브러리의 오버 헤드로 인해 이러한 프로그램은 SDK 만 사용하여 만든 것보다 약간 작지만 요즘에는 실제 오버 헤드가별로 중요하지 않습니다.

귀하의 질문에 표현 된 욕구는 입니다. 정확히입니다. 왜 내가 배웠는지, 지금도 Win32 API를 사용하고있는 이유는 분명합니다. 또한 프로그램이 보이고 느껴질 것입니다. 이는 대부분의 "크로스 플랫폼 GUI 도구 키트"보다 더 좋습니다. 이것의 이점은 과소 평가 될 수 없습니다.

하지만 Visual Studio를 열고 간단한 SDK "Hello World"앱을 컴파일하면 여전히 너무 큽니다. Kilobytes, 그러나 그것은 여전히 ​​상상할 수있는 가장 단순한 앱에 대해 많은 것 같습니다. 더 이상 작업을 줄이려면 Visual Studio에 C 런타임 라이브러리에 연결하지 말고 자신의 main 진입 점을 정의 해보십시오. 이것은 모든 초기화 초기화 코드를 구현해야한다는 것을 의미하지만, 이는 사소한 앱의 크기를 상당히 줄일 수 있습니다.

Matt Pietrek had this same idea 몇 년 전,이 길로 가기로 결정하면 원래 코드를 크게 "현대화"할 시간이 걸릴 것입니다.

+0

대답의 두 번째 단락에서 "약간 더 작게"대신 "약간 크게"라고 말한 것 같습니다. – selbie

1

FLTK은 인기있는 크로스 플랫폼 최소 GUI 툴킷입니다.

너무 많은 상세한 상호 작용이 필요하지 않으면 인기있는 대안은 최소한의 내장 웹 서버를 가동하고 브라우저에서 HTML로 모든 'gui'를 수행하는 것입니다.

관련 문제