Слишком долго для комментария:
Я не могу воспроизвести проблему в вопросе.Можете ли вы попробовать выполнить следующие шаги и посмотреть, по-прежнему ли вы получаете сообщение об ошибке?
У меня есть следующие файлы C ++:
test.hpp
#pragma once
namespace numbers {
typedef float float4;
}
numbers::float4 foo();
void foo1( numbers::float4 );
test.cpp
#include <iostream>
#include "test.hpp"
numbers::float4 foo() {
return 3.14f;
}
void foo1(numbers::float4 f) {
std::cout << f << '\n';
}
И файл интерфейса SWIG для ленивца:
test.i
%module example
%{
#include "test.hpp"
%}
%include "test.hpp"
Затем я генерирую код оболочки и компилирую все в общий объект.
$ swig -c++ -lua test.i
$ g++ -I/usr/include/lua5.2 -fPIC -shared test_wrap.cxx test.cpp -o example.so
Следующий пример сценария работает нормально.
test.lua
local example = require"example"
local foo = example.foo
local foo1 = example.foo1
result = foo()
foo1( result )
$ lua test.lua
3.14