문제

나는 많은 수업 (150+)을 가진 C ++ 프로젝트를 진행하고 있으며, 각각 10 ~ 300 개의 필드가 있습니다. 테스트 목적으로 스크립팅 인터페이스를 제공하여 재 컴파일이 필요하지 않은 콜백을 코딩 할 수 있습니다. 나는 Python 's보다 C API에 익숙하기 때문에 LUA에서 이것을하고 싶습니다. 그러나 그것이 두통을 저장하면 Python에서 그것을 기쁘게 생각합니다.

C ++에서 LUA 기능을 호출하는 방법에 대한 확실한 파악을 받았으며 그 반대도 마찬가지입니다. 기본 데이터 유형을 앞뒤로 전달하는 방법을 알고 있습니다. 내가 가진 문제는 SWIG를 사용하는 두 가지간에 사용자 지정 데이터 유형을 공유하는 방법입니다.

예를 들어 C ++의 어느 시점에서 250 개의 필드가있는 객체에서 몇 가지 멤버 데이터를 평가할 수 있습니다. 나는 그 물체를 LUA에 건네 줄 수 있고, 생성 된 SWIG 래퍼를 사용하여 해당 물체를 조작하고 특정 필드를 표시 한 다음 (잠재적으로 변경된) 물체를 C ++로 전달할 수 있습니다. .

또한 랩퍼를 사용하여 LUA의 객체 인스턴스를 인스턴스화하고 C ++로 전달하여 객체의 일반적인 C ++ 버전으로 사용될 수 있습니다.

이게 가능해? 누군가 나를 튜토리얼이나 명시적인 예를 향해 지적 할 수 있습니까?

제공 할 수있는 도움에 감사드립니다!

도움이 되었습니까?

해결책

SWIG 인터페이스를 사용하여 사용자 정의 유형을 랩핑하는 한 여기 SWIG-LUA API에 대한 문서화의 경우 상호 작용이 원활해야합니다. 제공된 SWIG 래퍼를 사용하면 새로운 객체를 인스턴스화하여 C ++로 전달하고 그 반대로 전달할 수 있습니다.

나는 SWIG-LUA 포장이 아직 감독 수업을 지원한다고 생각하지 않습니다. 즉, 기존 클래스를 확장하고, 인스턴스화하고 C ++로 전달하는 것은 불가능하다는 것을 의미합니다. 감독은 Python, Java, C#과 같은 언어를 지원합니다.

다른 팁

SWIG가 문제를 일으키면 C ++ 및 LUA를 바인딩하기위한 최신 버전의 Tolua ++에 행운을 빕니다. 수정 된 .h 파일을 입력으로 수정해야합니다.이 파일은 약간 지루하지만 SWIG의 모듈보다 더 이상 그렇지 않습니다. 나는 하나를 선호 할 이유가 없지만, 둘 다에 대해 아는 것이 좋습니다.

Luabind도 확인해야합니다. 이것은 LUA에 대한 OOP를 구현하고 LUA에서 C ++로 클래스 및 데이터 유형을 매핑 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top