2009-06-01 5 views

답변

13

나는 특히 SWIG를 선호하지 않으며 직접 인터페이스 코드를 작성하는 것을 선호합니다. Perl은 C 또는 C++에 인터페이싱하기 위해 'XS'라고하는 일종의 의사 언어를 제공합니다. 불행히도, 그것을 사용하려면 적어도 C, Perl을 알아야하며, 인터프리터 API에 대해서도 배워야합니다. Perl과 C가 이미 잘 알고 있다면 과 같은 큰 단계가 아닙니다. XS에 다음과 같은 핵심 문서에서보세요 :

  1. perlxstut (XS 튜토리얼)
  2. perlxs (XS 참조)
  3. perlapi (통역 API)

또한, 튜토리얼의 많음이있다 그리고 인터넷에서의 방법.

이제 XS를 사용하여 C++에 인터페이스하려면 몇 가지 추가 단계가 필요합니다. 처음에 해결하기는 다소 실망 스럽지만 일단 얻으면 깔끔하게 정리됩니다. 이와 관련하여 핵심 문서는 기껏해야 희소식입니다. 그러나 모든 것이 사라지지 않습니다. Perl의 wxWidgets 바인딩 생성자 인 Mattia Barbon은이 도구를 "XS ++"라고 불렀습니다.이 도구는이 도구를 간단하게 (또는 XS만큼 간단하게) 만듭니다. Wx에 포함되어 있지만, 우리는 자체 배포본으로 분할하는 작업을하고 있습니다. 이것은 진행중인 작업입니다. github에 Mattia's XS++ codemodified version of mine이 있습니다.

CPAN에 독립 XS ++의 릴리스 없다면, 나는 다른 자원에서 C++에 대한 XS를 쓰기 학습 제안 :

  • 아주 오래 전, 존 카이저는 우수한 tutorial on XS and C++을 썼다. 또한 유용한 도구 및 설명서에 대한 추가 정보를 제공합니다.
  • 나는이 튜토리얼과 CPAN에서 찾은 몇 가지 예제에서 XS & C++을 배웠다. 내가 본 것을 기억하지 못한다. 그러나 지금은 (좋거나 나쁘다고 나도 몰라) 예 : Math::SymbolicX::FastEvaluator으로 자신의 일을 가리킬 수 있습니다.
  • 마찬가지로 계획된 XS ++ 배포판에는 XS ++를 사용하여 C++ 및 Perl을 인터페이스하는 complete (albeit pointless) example이 포함되어 있습니다. XS ++는 일반 XS로 변환되므로 예제를 생성하는 데 사용할 수 있습니다.

추신 : 또한 인라인 :: CPP 모듈이 있습니다. 그게 효과가 있다면, 아마도 가장 쉬운 해결책 일 것입니다. 하지만 템플릿을 처리 할 수 ​​있을지는 의문입니다.

+0

약간의 언급을 잊어 버렸습니다. John Keizer의 튜토리얼에는 Dean Roehrich의 CPAN 디렉토리에 대한 링크가 있습니다. 링크가 부실 CPAN 미러에 있습니다. 이것을 대신 사용해보십시오 : http://search.cpan.org/CPAN/authors/id/DMR/ – tsee

+0

XS ++는 ExtUtils :: XSpp to CPAN으로 출시되었습니다 : http://search.cpan.org/dist/ExtUtils-XSpp 아직 초기 단계이지만 Wx.pm을 성공적으로 구축했습니다. – tsee

10

확인 http://www.swig.org는 :

"꿀꺽 꿀꺽는 높은 수준의 프로그래밍 언어의 다양한 ++ C 와 C로 작성된 프로그램을 연결하는 소프트웨어 개발 도구 입니다 꿀꺽 꿀꺽 언어의 서로 다른 종류의 을 사용한다. Perl, PHP, Python, Tcl 및 Ruby와 같은 일반적인 스크립팅 언어 을 포함합니다.

7

일반적으로 tsee처럼 XS를 선택하지만 Inline::C (또는이 경우 Inline::CPP)도 있습니다.나는 SWiG를 싫어하고 주변에 포장 된 패키지를 피하는 경향이 있습니다.

+2

OP는 아마도 Inline :: CPP를 원할 것입니다. – runrig

+0

분명히 사실입니다. 나는 개인적으로 그 사실을 알지 못했습니다. – jettero

+1

+1'Inline' 모듈은 실제로 외국 코드를 ​​Perl에 쉽게 통합 할 수있게합니다. – mob

관련 문제