스크립팅 기능으로 C++ 응용 프로그램을 확장하는 방법을 연구 중이며 Python 또는 JavaScript를보고 있습니다. 사용자 정의 스크립트는 응용 프로그램의 데이터 모델에 액세스 할 수 있어야합니다.C에서 스크립트 엔진 포함
이러한 스크립팅 엔진을 내장 한 경험이 있습니까? 잠재적 인 함정은 무엇입니까?
스크립팅 기능으로 C++ 응용 프로그램을 확장하는 방법을 연구 중이며 Python 또는 JavaScript를보고 있습니다. 사용자 정의 스크립트는 응용 프로그램의 데이터 모델에 액세스 할 수 있어야합니다.C에서 스크립트 엔진 포함
이러한 스크립팅 엔진을 내장 한 경험이 있습니까? 잠재적 인 함정은 무엇입니까?
Boost::Python 라이브러리 (ok, ok, sarcasm.)를 사용하여 Python을 쉽게 포함 할 수 있습니다. 언어 간 기능에있어 "쉬운"것은 없습니다. Boost는 이러한 개발을 돕기 위해 많은 노력을 기울였습니다. Boost-> Python 인터페이스에서 맹세 한 개발자 중 한 명. 그의 코드는 Python에서 사용자가 프로그래밍 할 수 있으며 REPL은 UI에 내장되어 있습니다. 놀랄 만한.
그러나 SWIG 및 Java와 같은 다른 언어를 사용하여 내 경험이 더 잘 관찰되었습니다. 저는 현재 C++을 파이썬으로 포장하기 위해 SWIG와 협력 중입니다. 예외, 스레딩, 언어 간 다형성 등 모든 종류의 문제가 있습니다.
나는이 두 위치를 먼저 보았습니다. 내가 말했듯이 "쉬운"것은 없지만이 두 가지 모두 삶을 더 살기 좋게 만듭니다.
부스터 :: 파이썬은 wheaties 대답처럼 매우 성숙한 솔루션입니다.
루아는 임베드하기 쉽다는 평판을 얻었지만 나 자신을 시도하지는 않았습니다.
사용자가 R이므로 RInside 패키지를 사용하여 R을 삽입하는 데 더 관심이 있습니다. 간단한 예제는
#include <RInside.h> // for the embedded R via RInside
int main(int argc, char *argv[]) {
RInside R(argc, argv); // create an embedded R instance
R["txt"] = "Hello, world!\n"; // assign a char* (string) to 'txt'
R.parseEvalQ("cat(txt)"); // eval the init string, ignoring any returns
exit(0);
}
이며 패키지에 몇 가지 예가 더 있습니다. RInside은 Rcpp 인터페이스 패키지 중 일부를 사용하여 R 엔진 주위에 멋진 래퍼를 제공합니다.
루아는 또한 프로그램에 포함시키기에 훌륭한 후보입니다. 그 자체가 매우 자체 포함되어 있으며 심지어 네이티브 크로스 언어 호출 시스템은 나쁘지 않습니다.
JavaScript의 경우 가장 좋은 방법은 지금 작업하기에 쉬운 V8 (Google에서 제공)을 보는 것입니다.
루아와 함께 C++에서 루아를 쉽게 사용할 수 있습니다. 잘 작동합니다. – Nikko
angelscript 을 간단하고 쉽게 포함 할 수 있습니다. c/C++ 구문과 유사합니다. 무료 및 corss- 플랫폼. 몇 시간 후에 시작할 수 있습니다.
당신은 정말로 루아도 고려해야한다. 그것은 훌륭하게 C++와 통합된다. –
안녕하세요 토니 조랑말, 다른 프로그래밍 언어가 나옵니다. ZetScript라고 불립니다. 아직 스크립트 엔진을 찾고 있는지는 모르겠지만 필요에 맞게 살펴보십시오! http://zetscript.org –