Luabind的pure_out_value无法编译。

我在使用Luabind的'pure_out_value'函数属性时遇到了一些问题。在我的情况下,编译时Luabind会发生错误,说需要使用该属性的特定函数的模板没有包含在内。

所使用的代码非常类似于带有Luabind的test_policies.cpp中的代码:

class IConfiguration
{
    int GetString( const char* className, const char* entryName, char** ppszOut );
};

module( L )
[
    class_< IConfiguration >( "IConfiguration" )
        .def( "GetString", &IConfiguration::GetString, pure_out_value(_3) )
];

我尝试编译时得到的错误:

'apply' : is not a member of 'luabind::detail::pure_out_value_policy<N,Policies>::only_accepts_nonconst_references_or_pointers'
'consumed_args' : is not a member of 'luabind::detail::pure_out_value_policy<N,Policies>::only_accepts_nonconst_references_or_pointers'
'consumed_args' : is not a member of 'luabind::detail::pure_out_value_policy<N,Policies>::only_accepts_nonconst_references_or_pointers'
'converter_postcall' : is not a member of 'luabind::detail::pure_out_value_policy<N,Policies>::only_accepts_nonconst_references_or_pointers'
'match' : is not a member of 'luabind::detail::pure_out_value_policy<N,Policies>::only_accepts_nonconst_references_or_pointers'

与环境相关的信息:

  • Lua 5.1.4(带有位运算补丁)
  • Luabind 0.9.1
  • Boost 1.53
  • Visual Studio 2012 w/Update 1(使用v110_xp设置进行编译。)

我还尝试了公开已知的针对5.2修补版的Luabind版本(仍然支持5.1),它可以在这里找到:

https://bitbucket.org/cinderblocks/luabind

Luabind的其余部分似乎运作正常,只是pure_out_value策略不行。

点赞
用户1080150
用户1080150

当然,在发帖寻求帮助后,我解决了问题。就是喜欢这种事情发生的时候。

对于任何遇到类似问题的人,问题在于我在使用pure_out_value时使用了错误的参数号码。在我这种情况下,由于这些参数是类成员函数的一部分,我忘记考虑自动发生的“this”参数。因此,而不是_3,应该是_4。

现在运行得很好。 :)

2013-02-11 00:32:23