Squirrel,sqrat,绑定类时出错
Squirrel, sqrat, error when binding class
我正在尝试编译一个绑定类的程序,以便可以将其与松鼠脚本一起使用。
我在Windows7下使用VS2010,并使用带有调试配置的unicode字符集编译了松鼠库和sqrat。
我得到的错误在\sqrat\sqratclass.h中,第81行:
error C2664: 'Sqrat::Class<C>::InitClass' : cannot convert parameter 1 from 'const char *' to 'const Sqrat::string &'
有人知道我该怎么做才能让它正常工作吗?或者这是sqrat中的一个bug?非常感谢!
这是c++文件:
#include <iostream>
#include <string>
#include <sqrat.h>
class TestClass
{
public:
int integerVar;
std::wstring stringVar;
void printString() { std::wcout << this->stringVar; }
};
void squirrelPrint(SQChar * text)
{
std::wcout << text << std::endl;
}
int main()
{
HSQUIRRELVM squirrelvm = sq_open(1024);
Sqrat::DefaultVM::Set(squirrelvm);
Sqrat::RootTable().Bind(L"TestClass", Sqrat::Class<TestClass>()
.Func(L"printString", &TestClass::printString)
.Var(L"integerVar", &TestClass::integerVar)
.Var(L"strVar", &TestClass::stringVar));
Sqrat::Script script;
script.CompileFile(L"testfile.nut");
script.Run();
}
编辑:给出错误的行是:
InitClass(typeid(*this).name());
对不起,在问这个问题之前我应该先试试这个。我下载了0.8.9版本,这是sqrat的"最新版本",正如他们主页上所说。这可能是最新的稳定版本。
无论如何,我现在已经尝试了完全相同的方法,使用来自https://github.com/Amorph/sqrat/它成功了!除了我不得不更改这条线路
return sq_throwerror(vm, "No overload matching this argument list found");
进入
return sq_throwerror(vm, _SC("No overload matching this argument list found"));
相关文章:
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 在基于范围的for循环中使用结构化绑定声明
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 视觉studo 2019中的漫画和静态/动态绑定
- 将自由函数绑定为类成员函数
- 将常量指针引用绑定到非常量指针
- 在派生类中绑定非静态模板化成员函数
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- 在 openGL 中多次绑定缓冲区
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 使用结构化绑定'Reflection'
- 在 emscripten 中绑定属性和函数时出错
- 在 NS-2 中绑定变量时出错
- 使用boost数字绑定和对gesvd的lapack调用时出错
- 使用 mingw 和 msis 编译带有 Python 绑定的 c++ 时出错
- Squirrel,sqrat,绑定类时出错
- 绑定make_unique出错
- 将c++函数绑定到V8时调用SetAccessor出错