2012-08-17 3 views
7

웹 앱의 클라이언트 측에 공개하고 싶은 C++ 코드가 있습니다. 이상적으로는 C++ 클래스의 Javascript 래퍼 객체를 작성하여 클라이언트 측에서 사용할 수있게하려고합니다.자바 스크립트 C++ 바인딩?

이전에이 작업을 수행 했습니까? 누구나 달성 할 수있는 방법을 보여주는 링크가 있습니까?

+0

이 C++ 코드가 서버에 있습니까? 그렇지 않다면 어떻게 고객에게 전달할 수 있습니까? –

+0

나는 그가 RMI에 대해 이야기하고 있다고 생각한다. 클라이언트에서 자동 생성 된 Javascript 객체로 서버의 C++ 코드와 통신 할 수 있습니다. 직렬화 메커니즘을 사용하면 작성할 필요가 없습니다. –

+0

@ JohnWatts : 예, 맞습니다. 효과적으로 RMI입니다. C++ 라이브러리는 서버에 존재하며 Javascript 클래스는 백엔드 라이브러리와 상호 작용하는 API를 제공합니다. –

답변

1

, 그것은 도움이 될 수 있습니다 : emscripten

+0

예, 어제 이것을 발견했습니다. 나는 그것을 다운로드하고 그것을 실험하기 시작했다. 가야할 길처럼 보입니다. –

+0

여전히 선호 라이브러리인가요, 아니면 권장할만한 더 현대적인 접근 방법이 있습니까? @HomunculusReticulli가 요즘 사용하고있는 것이 무엇인지 궁금합니다. 이 질문에서 볼 수있는 유일한 업데이트는 14 일이었습니다. v8bridge에 github을 언급했습니다. –

+1

@kayleeFrye_onDeck : 나는 emscripten을 사용하여 끝내게되었습니다. HTH –

0

C + + JSON 파서가 필요하다고 생각합니다. 당신은 여기에서 찾을 수 있어야합니다 http://www.json.org/. 모든 동작을 수행하지 않고 C++ 객체를 직렬화 및 비 직렬화하기 때문에 원하는 모든 작업을 수행 할 수는 없지만 충분히 좋을 것입니다. 자세한 내용은 https://stackoverflow.com/questions/245973/whats-the-best-c-json-parser을 참조하십시오.

+0

hm에서 JSON은 두 구성 요소간에 교환되는 데이터 만 구현합니다. 나는 OP가 노출/인터페이싱이라는 쉬운 방법에 대해 이야기하고 있다고 생각합니다. – Constantinius

+0

@JohnWatts : 좋은 출발점이긴하지만 브라우저에서 스크립트를 실행하는 것이 맞는지는 잘 모르겠다 - 스크립트가 "포장 된" C++ 객체. –

+0

@ Constantinius : 예, 제가 작성한 요점이 있습니다 (내가 타이핑 할 때!) –

0

C++ 코드가 클라이언트에 있어야하는 경우 웹 응용 프로그램에서이 작업을 수행 할 수있는 간단한 방법이 없습니다. 솔루션에는 지원하려는 브라우저 용 코딩 플러그인이 포함될 수 있으며, 자바 스크립트 코드에서 액세스 할 수 있습니다.

예를 들어 클라이언트 응용 프로그램에이 기능이 필요한 경우는 다른 경우입니다. 이러한 일은 끝났으며 예를 들어 크롬 라이브러리 또는 다른 자바 스크립트 실행 엔진으로 응용 프로그램을 연결 (또는 외부에서 실행)해야합니다. 그렇게하면 C++ 클래스에 대한 바인딩을 만들고 자바 스크립트에서 이러한 객체를 사용할 수 있습니다. 이것은 또한 사소한 해결책이 아니며 구현하는 데 많은 노력이 필요할 수 있습니다 (추가 리소스가 필요함).

0

예를 들어 PHP 또는 Python으로 C++ 클래스를 래핑 한 다음 필요한 기능에 액세스하기 위해 HTTP를 통해 API를 구현할 수 있습니다.

JavaScript로 함수를 노출시키려는 경우 Node.js를 사용하고 클래스를 래핑하기 위해 C++ 애드온을 만들 수 있습니다. 여기 Node.js 문서를 참조하십시오 : http://nodejs.org/api/addons.html#addons_wrapping_c_objects

그러나 어느 쪽이든, 나는 API (HTTP SOAP, XML RPC)를 서버의 기능에 액세스하는 것을 피하지 않을 것이라고 생각합니다.

+1

추가 언어/프레임 워크를 사용하는 이유는 무엇입니까? 다른 종속성을 사용하는 것보다 직접적인 접근이 가능할 것으로 확신합니다. – Constantinius

+0

JS보다는 PHP 나 Python에서 C++ 클래스를 매핑하는 것이 더 쉽다고 생각하기 때문에 PHP와 Python에 대해 언급했습니다. – nutrina

+0

자바 스크립트에서 PHP/Python을 필요로 할 때 매핑 클래스를 사용하는 것은 무엇입니까? – Constantinius

0

나는 RPC을 원한다고 생각합니다. 일종의 프레임 워크를 사용하여 서버 측에서 함수를 래핑해야합니다. 아직 사용하지는 않았지만 this one은 유망 해 보입니다.

클라이언트 측에서는 프록시 개체를 사용하여 함수 호출을 전달합니다. 통신은 일반적으로 XML-RPC 또는 JSON-RPC를 통해 처리됩니다. this client side framework을 사용했는데 내용이 풍부했지만 확실한 것은 find many others입니다. 자바 스크립트로 C++ 코드를 변환하는 라이브러리가있다

1

Libjspp C++ 템플릿 기반의 래퍼를 내장하고 자바 스크립트 엔진 SpiderMonkey를 1을 확장. 8. 5 이상

SpiderMonkey? Mozilla 프로젝트의 Javascript/ECMAScript 엔진입니다.

Libjspp를 사용하면 C++ 개발자가 SpiderMonkey를 포함 할 수 있습니까? 간단하고 쉽게 응용 프로그램에 적용 할 수 있습니다. Libjspp은 실제 프로세스를 달성하는 데 도움이되는 스레드 당 하나의 엔진에 적합한 동일한 프로세스 내에서 여러 Javascript 엔진을 실행할 수 있습니다. 또한 Libjspp은 사용자가 엔진 내에서 여러 스레드를 실행하는 것을 막지 않습니다.

http://code.google.com/p/libjspp/

+0

libjspp는 (는) 비어있는 Git 저장소 인 것으로 보입니다. – jjrv

1

그러나 이것은 내가 지금 정확한 상황이었다 오래된 토피, 그리고 내가 그물 복잡하거나 오래된에있는 모든 솔루션.

최근에 나는 V8 엔진을 지원하는 라이브러리 (새로운 격리 API 포함, 90 %의 라이브러리를 구형으로 만든 라이브러리)를 실행하고 뛰어난 노출 및 상호 작용 API를 제공합니다.

https://github.com/QuartzTechnologies/v8bridge

나는 내 솔루션은 사람을 도울 수 있기를 바랍니다. QML 비록

0

Qt 그냥 당신이이 nbind라는 수행하는 비교적 새로운 라이브러리가있다

1

을 필요 같은 일반 C의 ++ 아니지만, 그들이 함께 할 것, 정확하게 자바 스크립트 없습니다. 그게 너에게 어울릴 까? 그것은 나에게 매우 좋게 보입니다. 그리고 나는 막 사용하려고합니다.

+0

좋았어, 고마워. 나중에 시간이 좀 있어도 나중에 확인해 보겠습니다. –