HTML / CSS UI로 네이티브 C ++ 앱을 빌드하는 방법은 무엇입니까?


83

사용자 인터페이스에 HTML과 CSS를 사용하면서 C ++ 프로그램을 개발할 수 있습니까? Webkit 컨테이너를 사용하여 Javascript로 프로그래밍하는 것에 대해 알고 있지만 C ++ 개발에 정말 관심이 있습니다.

Windows에서 개발할 때 C # WPF가 마음에 들었지만 이제는 Linux로 옮겨 인터페이스에 대한 마크 업을 사용하는 데 좋은 도구를 찾지 못했습니다. 이를 위해 매우 가볍고 사용하기 쉬운 HTML과 CSS를 C ++ 코드와 WPF와 같은 코드와 함께 사용하고 싶습니다.

아, 한 가지 더 : 저는 웹이 아닌 데스크톱 개발을 찾고 있습니다.

답변:


40

예, 가능합니다. 원하는 것은 C ++ 웹 프레임 워크입니다. 빠른 웹 애플리케이션 개발을 목표로하는 무료 고성능 웹 개발 프레임 워크 (CMS가 아님) 인 CppCMS 부터 살펴볼 수 있습니다.

편집 : 질문이 명확 해지면 Awesomium 이 귀하의 요구에 적합 하다고 생각 합니다.

WebKit (또는 Gecko)를 임베딩하여 동일한 기능을 얻을 수 있지만 내가 아는 한 Awesomium이이면에서하는 일입니다.

대안은 게임 애플리케이션 용으로 설계된 C ++ 인터페이스 미들웨어 패키지 인 librocket 입니다. 설명에서 짐작할 수 있듯이 게임이나 실시간 응용 프로그램에 적합합니다.


3
그러나 이것이 실행 파일을 위해 컴파일됩니까? 저는 웹이 아닌 데스크톱을 찾고 있습니다.
ranisalt 2013

4
사용자가 브라우저를 시작하고 localhost로 이동 하여 애플리케이션의 인터페이스를 사용할 수 있도록 하시겠습니까? 아니면 사용자가 실행 파일을 열고 웹 인터페이스를 표시하도록 하시겠습니까?

15
@RobertDinu 나는 그가 HTML / CSS로 사용자 인터페이스 C와 데스크톱 응용 프로그램을 구축 ++ 및 만들려고 생각
레오나르도 아로요

4
@RobertDinu : OP에 유용 할 수있는 libRocket ( librocket.com ) 이라는 더 작고 가벼운 라이브러리 도 있습니다. 적합하다고 생각되면 답변에 추가 할 수 있습니다.
yzt

이렇게하면 시간이 얼마나 절약되는지 알 수 있습니다. 이 접근 방식이 어느 시점에서 문제로 이어질까요?
expiredninja

35

Sciter 는 C / C ++ API가 포함 된 임베드 가능한 HTML / CSS 엔진입니다. 소형 및 다중 플랫폼.

그리고이 기사를 확인 하십시오 .

Sciter는 WPF 와 동일한 기능 세트를 가지고 있지만 XAML 대신 HTML / CSS를 사용하고 네이티브 API를 사용합니다.

즉시 사용 가능한 기능 :

  • HTML, CSS, SVG, aPNG (애니메이션 PNG), 이미지 스프라이트,
  • <plaintext> -구문 강조 기능이있는 편집기,
  • <htmlarea> -WYSIWYG HTML 편집기,
  • <frame type=pager> -인쇄 미리보기 및 HTML / CSS 인쇄,
  • 애니메이션,
  • HTTP 클라이언트, REST / JSON 클라이언트, WebSocket 's, DataSockets,
  • 기타

동일한 소스의 Windows, MacOS 및 Linux에서 실행되는 Sciter UI가있는 동일한 애플리케이션 :

여기에 이미지 설명 입력

면책 조항 : 저는 Sciter Engine의 저자입니다.


2
저는 C ++의 초보자이지만 초보자에게는 문서가 부족하고 무섭습니다. 문서는 코드 블록에서 데모를 실행하는 방법 또는 작동하는지 확인하기 위해 쉘로 시작해야합니다. 프로젝트
repzero

@repzero이 기사를 확인하십시오 codeproject.com/Articles/859098/… , C ++ 초보자에게 적합하다고 생각합니다.
c-smile

2
@repzero 코드 블록의 경우 해당 IDE에서 {sciter-sdk} /demos/usciter/usciter.cbp를 열고 Release64 대상을 선택한 다음 "Build and Run"버튼을 클릭하면 앱이 실행되는 것을 볼 수 있습니다.
c-smile

@ c-smile 여기에 몇 가지 지침을 주셔서 감사합니다. 코드 블록에서 프로젝트를 실행하려고 할 때 치명적인 오류 "gtk / gtk.h no such file or directory"가 발생했습니다.이 오류는 "sciter-x"의 include 문에서 발생했습니다. -types.h "헤더 파일 ... 데비안 jessie를 실행 중입니다 .. gtk.h 파일이 포함 된 gtk라는 폴더가 있습니다. 이 폴더는 '/user/include/gtk-2.o/gtk'에 있습니다 .. 조언이 있습니까?
repzero

Linux Sciter에서는 GTK3가 필요합니다. 당신이 빌드 샘플을 원하는 경우에 당신은 시도 GTK 개발 패키지가 필요합니다sudo apt-get install libgtk-3-dev
C는-미소

11

Electron 이 다른 답변에 좋은 추가가 될 것이라고 생각 합니다.

NodeJS를 사용하여 Webkit 창을 실행합니다. Electron 자체는 html / css / js 일 뿐이지 만 Electron 앱 내에서 고유하게 컴파일 된 사용자 지정 C ++ 코드를 포함하여 모든 노드 모듈을 사용할 수 있습니다. C ++ 코드를 포함 할 수있는 모듈은 node-gyp입니다.

그러나이 워크 플로에는 다른 답변보다 약간 더 많은 JS가 포함될 수 있습니다.

제가 가장 좋아하는 텍스트 편집기 인 Atom 은 Electron으로 제작되었습니다.



4

2019 년 부터는
C ++에서 사용할 수있는 오픈 소스가 아닌 Ultralight HTML UI 엔진을 확인하는 것이 좋습니다 . OpenGL 및 DirectX 렌더링이 지원됩니다.

Ultralight는 C ++ 앱에 HTML UI를 통합하는 더 가볍고 빠른 옵션입니다.

불행히도 Awesomium을 삭제하기로 결정한 Awesomium의 제작자가 만들었습니다. 이것이 우리가 지금 얻은 것입니다.

가볍기보다 더 무거운 것을 필요로한다면 CEF를 살펴 보는 것이 좋습니다 . 매우 강력한 (그리고 오픈 소스) 도구입니다.


1
폐쇄 소스라는 것은 Awesomium이 할 수 있었던 일을 고려할 때 매우 불행한 일입니다. (
ranisalt

Ultralight를 시도했지만 실패했습니다. lib-not-found 오류로 인해 브라우저 샘플을 실행할 수도 없습니다. 포함 폴더는 확실히 내 PATH 변수에 있습니다. 기본 앱을 컴파일하려고했지만 성공하지 못했습니다. 컴파일러는 grep을 사용하여 증명할 수 있었으므로 어디에도 선언되지 않은 클래스 설정을 찾을 수 없습니다. (Ubuntu 18.4)
testalucida

@testalucida Ultralight의 Slack 작업 공간에서 지원을받을 수 있습니다.
토 메르 zeitune
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.