2010-06-24 3 views
10

크로스 플랫폼 Qt C++ 응용 프로그램에서 라이브러리 사용을위한 빠른 기능 언어 측면에서 어떤 옵션이 있습니까?C++ 응용 프로그램에서 라이브러리 사용을위한 좋은 크로스 플랫폼 기능 언어?

거의 모든 언어 (기능적이든 아니든)에서 C/C++ 코드를 쉽게 호출 할 수있는 방법이있는 것처럼 보입니다. Qt에서 C++을 사용하여 상태 기반 비즈니스 로직, GUI 및 기타 요소에 대한 응용 프로그램을 작성하고 드롭 다운하고 핵심 계산 라이브러리에 함수 언어를 사용합니다.

이러한 방식으로 어떤 것을 쉽게 사용할 수 있습니까? 예를 들어 OCaml 코드를 정적 라이브러리로 컴파일 한 다음 C++ 응용 프로그램에서 사용할 수 있습니까?

덕분에, 리 카드

+0

또한 기능 코드가 가능한 한 빨리 많은 과도한 계산을 수행하므로 속도에 대한 의존성이 있습니다 (유한 차이 방법을 사용하여 PDE 해결). – Rickard

답변

5

하스켈은 Qt는/qmake를하고 GHC하여 빌드 프로세스와의 상호 작용이 작동 얻기 위해 약간의 속임수를 취할 수 있지만,이 기능이 뿐만 아니라 당신의 목적 :

http://www.haskell.org/hdirect/

+0

나는이 길로 내려가는 유혹에 빠진다. 그것은 비상업적 인 작은 프로젝트이므로 여분 시간을 제외하고는 위험하지 않습니다. 나는 haskell 런타임이 동시성에 문제가 없으며 동시에 여러 스레드에서 라이브러리를 호출 할 수 있다고 가정합니다. 아마도 약간의 주관적인 질문 이었지만 분명히 "정확한"답변이 없더라도이 대답을 받아 들일 것입니다. – Rickard

2

AutoCADAutoLisp는 나의 제안은 리스프 것 사용합니다. 또한 비슷한 것 같다 HaskellDirect라는 프로젝트가

http://www.haskell.org/haskellwiki/Calling_Haskell_from_C

:

+0

Lisp에 대한 경험이 거의 없지만 Lisp 컴파일러가 c-consumable 바이트 코드를 생성 할 수 있는지 궁금하므로 단순히 라이브러리의 함수를 호출 할 수 있습니까? 나는 파이썬을 C 애플리케이션에 삽입 할 때와 같이 참조를 계산하고 PyObject *를 사용하여 함수를 호출 할 때와 같이 애플리케이션에 임베드 된 인터프리터를 관리하지 않아도된다. – Rickard

+0

Şerbănoiu : 예, AutoLisp은 AutoCAD에 포함되도록 특별히 생성되었습니다. 그렇다고해서 모든 Lisps가 자동으로 C++ 코드에서 함수를 쉽게 호출 할 수 있다는 속성을 가지고있는 것은 아닙니다.그는 자신의 C++ 응용 프로그램에 언어를 포함 시키려고하지 않고 자신의 응용 프로그램에서 다른 언어로 작성된 컴파일 된 라이브러리 코드를 호출하려고합니다. – sepp2k

2

나는 qtHaskell을 확인하고 하스켈에서 모든 일을 유혹 할 것입니다. 제 의견은 Don Stewart의 놀라운 성공이 xmonad in Haskell 일에 근거합니다.

+0

유혹이지만 가능한 Qt와 같은 라이브러리의 포트에 의존하고 싶습니다. 어떤 것들은 또한 C++의 클래스를 사용하여 상태 유지 로직과 관련하여 매우 쉽게 처리 할 수 ​​있습니다. 답장을 보내 주셔서 감사합니다. 가능성을 확실히 고려해 보겠습니다. – Rickard

1

Lisp과 하스켈은 뛰어난 기능적 언어이지만 C/C++ 코드를 언어와 함께 묶는 편이성을 고려한다면 lua를 추천합니다.

박쥐 바로 오른쪽에 C 함수를 바인딩하는 것은 매우 간단합니다. 인터프리터는 초소형이며 쉬운 라이브러리로서, 가장 빠른 스크립트 언어 중 하나이며, 루아 바인드를 사용하면 C++ 클래스를 쉽게 바인딩 할 수 있습니다 , 템플릿 인스턴스화 등. 과거에는 수많은 스크립팅 언어에 대한 바인딩을 수행해야 했으므로 루아와 똑같은 코드를 찾지 못했습니다. swig를 통해 바인딩하는 것을 선호하는 경우 swig도 지원되므로 여러 가지 스크립팅 언어를 지원할 수 있습니다.

순수 언어 관점에서 lua (lisp에 필적)의 메타 기능/메타 프로그래밍 측면은 모든 프로그래밍 패러다임을 지원하는 것을 매우 쉽게 만든다. 개인적으로 함수 프로그래밍에 가장 적합하다고 생각한다. 그것은 매우 사용자 정의가 가능하며 임베디드 용도에 적합합니다.

그러나 이미 qt를 사용하고 있으므로 qtHaskell도 고려해 볼 수 있습니다.

+0

아마도 Lua는 이와 같은 것들을위한 더 나은 선택이지만 C/C++ 응용 프로그램에서 파이썬 코드를 임베딩하고 실행하는 번거 로움을 알고 있습니다. 런타임을 초기화하고 함수를 호출하는 것보다 훨씬 더 많은 작업이 필요합니다. Lua 문서에서 C-api를 살펴볼 것이다. 나는 루아의 속도에 관해 큰 것들을 들었으므로 확실히 흥미 롭습니다. 답변 해 주셔서 감사합니다. – Rickard

관련 문제