2017-10-10 2 views
2

--- 컨텍스트 ---루아 스크립트에서 새로운 C++ 객체 생성하기?

"fileProcessor"라는 클래스가 필요합니다. 이 클래스는 완전히 정적이며 일부 전역 함수에 대한 편리한 네임 스페이스 역할을합니다. 이것은 아무것도 이상한 것 같으면 무시 그래서이 클래스에서 물건의 대부분을 ommitted 것을

class fileProcessor{ 
private: 
    lua_State* LUA_state; 
public: 
    static std::variant<type1,type2> processFile(const char* filePath,const char* processorScript); 
} 

다시 유의하시기 바랍니다에만 해당 물건 클래스의 기본 청사진이다. 어떻게해야 무엇 과정 파일

은 다음과 같습니다

  1. 그것을 포함한 모든 지시를 저장, 파일 경로 파일 읽기 (이것은 내 자신의 파일 형식 또는 구문의 스타일이 이미 올바르게 handeled이다.). 지시어는 문자열과 함께 저장되며, 하나는 명령을위한 것이고 다른 하나는 명령을위한 것입니다.
  2. 스크립트 파일을 읽고 주석 처리 된 fileProcessor 행이 맨 위에 있는지 확인하십시오. 이것은로드 된 lua 스크립트가 관련이 있으며 임의의 동작 스크립트가 아닌지 확인하는 것입니다.
  3. lua 스크립트를로드하고 컴파일하십시오.
  4. 모든 지시문을 사용할 수 있도록 설정하십시오 (앞에서 설명한대로 2 개의 문자열로 구성되어 있습니다)
  5. 파일을 실행하고 개체를 다시 수신합니다. 객체는 반환 유형 (변형)에 나열된 유형이어야합니다.

4 단계와 스크립팅의 중요한 부분에 문제가 있습니다.

--- 질문 --- 내가 루아 내에서 쓸 다음 다시 루아에서 그것을 얻을, 루아 내 타입 1 또는 가능한 타입 2의 전체 새로운 객체의 생성을 할 수있는 방법

C++로 스택하고 type1 또는 type2를 여전히 알고 있습니까?

은 ---이 질문은 내가 내 수업을 제공하는 유일한 이유가 더 일반적이며 이후 제공되지 예는 컨텍스트 .--- 당신이 그것을 다른 일을하려고하는 것처럼

+0

어떻게 lua를 C++로 실행하고 있습니까? 어떤 라이브러리를 사용하고 있습니까? –

+0

@ BjørnMoholt 내 질문과 관련이 있습니까? 웹 사이트에서 얻을 수있는 일반 루아 라이브러리를 사용하고 있습니다. https://www.lua.org/pil/24.1.html 마지막 몇 가지 paraghraphs는 C++에서 사용하는 방법을 설명합니다 – MoustacheSpy

+0

다른 루아의 libs에 따라 루아와 C++를 함께 사용하는 경험이 없습니다. 나는 어떤 종류의 물건이 지원되는지 모른다. 그래서 나는 문서를 확인해야한다. 그것은 당신이 어떤 라이브러리를 사용하고 있는지를 알아야한다는 것을 의미한다. 대안은 무작위로 하나를 선택하고 최선을 희망하는 것이지만, 그것은 신중하게 보이지 않습니다. –

답변

2

것 같다 위해입니다 길 주변에. 나는 this의 일부분을 인용한다.

... 당신은 Lua를 클라이언트의 기본 언어로, C++를 클라이언트로 기대하고있다. 문제는 루아 C 인터페이스가 그렇게 작동하도록 설계되지 않았기 때문에 루아는 클라이언트를위한 것이며 모든 노력은 루아가 쉽게 호출 할 수 있도록 C로 작성되어야한다는 것입니다.

다른 방법으로 주위를 돌리면 해결 방법을 따를 수 있습니다. 답변 : that 답변이 제공됩니다. 그렇지 않으면 내가 생각하기에 LUA를 사용하여 필요한 것을 얻을 수 있다고 생각합니다.

LUA는 (닐, 불리언, 숫자, 캐릭터, 유저 데이터, 기능, 스레드, 및 표)를 8 개의 기본 유형이있다. 그러나 네이티브 C++에서 새 유형으로 클래스를 작성하고이를 LUA로 등록하여 필요에 따라 새로운 유형을 추가 할 수 있습니다.luna.h(as shown in this tutorial)처럼 ++ C에 대한 몇 가지 LUA 도우미를 사용

  1. :

    당신이 중 하나에 의해 등록 할 수 있습니다.

  2. C++ 클래스 (check this answer)을 사용하여 새 루아 테이블을 푸시합니다.

네이티브 C++ 코드에서 클래스 개체 인스턴스가 만들어지고 LUA로 전달됩니다. 그런 다음 LUA는 클래스 인터페이스에서 제공하는 메소드를 사용합니다.