我在让 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 策略。