1

我在让 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
  • 提升 1.53
  • Visual Studio 2012 w/Update 1(使用 v110_xp 设置编译。)

我还尝试过使用 Luabind 的 5.2 补丁版本(仍然支持 5.1),可以在这里找到: https ://bitbucket.org/cinderblocks/luabind

Luabind 的其余部分似乎工作正常,但不是 pure_out_value 策略。

4

1 回答 1

1

当然,在发布寻求帮助后,我发现了问题所在。爱当那发生..

对于遇到类似问题的任何人,问题出在我与 pure_out_value 一起使用的 arg 数字上。在我上面的例子中,由于参数是类成员函数的一部分,我忘记考虑自动发生的“this”参数。所以应该是_4而不是_3。

现在效果很好。:)

于 2013-02-11T00:32:23.470 回答