Новая структура в модуле lua недоступна на этапе компиляции - PullRequest
0 голосов
/ 26 апреля 2020

Я новичок в lua сценариях. Попытка экспортировать некоторый существующий класс c ++ в lua, расширяемый дополнительными структурами и методами.

%module custom_matching

%include "std_vector.i"
%include "std_pair.i"

%inline %{
#include "Matching.h"
%}

%typemap(out) boost::optional<double> %{
if($1)
    $result = *$1;
else {
    $result = nil;
}
%}

namespace Matching{
        class Matching {
            public:
            Matching(double someArg = 1e-4);

            boost::optional<double> onMsg(double forwardDistance = 0.);

            void setVerbose(bool verbose);
        };

        %extend Matching {    
            boost::optional<double> onPoseMsg(const Custom3dPoint &pose) {
                std::cout << "onPoseMsg\n";
                return boost::none;
            }
        }

        struct Custom3dPoint {
            double x, y, z;
        };
}

Прежде всего я получил сообщение об ошибке: «Custom3dPoint» не был объявлен.

Также я хотел бы знать, будет ли обтекание boost :: option работать правильно в lua, и при создании экземпляра класса будут использоваться аргументы по умолчанию.

Swig 3.0

...