【问题标题】:Squirrel, sqrat, error when binding class松鼠、sqrat、绑定类时出错
【发布时间】:2013-07-07 20:34:28
【问题描述】:

我正在尝试编译一个绑定类的程序,以便我可以将它与松鼠脚本一起使用。

我在 Windows 7 下使用 VS2010,并使用带有调试配置的 unicode 字符集编译了 squirrel 库和 sqrat。

我得到的错误在 \sqrat\sqratclass.h,第 81 行:

error C2664: 'Sqrat::Class<C>::InitClass' : cannot convert parameter 1 from 'const char *' to 'const Sqrat::string &'   

有人知道我必须做什么才能使其正常工作吗?或者这是 sqrat 中的错误?非常感谢!

这是 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());

【问题讨论】:

  • 如果您更清楚地指定哪一行给出错误会有所帮助,因为这里没有第 81 行...而且您没有显示 \sqrat\sqratclass.h 和/或 sqrat.h 代码跨度>
  • @Antonio 给出错误的行是 InitClass(typeid(*this).name());
  • 另外,如果有帮助,我正在使用 sqrat 0.8.90 和 squirrel 3.0.4
  • 嗯,我会说您传递的参数之一必须更改,似乎Sqrat::string(您应该检查构造函数)不会接受 char*,或者没有定义从 char* 到 Sqrat::string 的转换,可能在字符串前面使用“L”没有帮助
  • @Antonio 当我删除“L”时,它给出了另一个错误。无论如何,感谢您的帮助!作者在他最新版本的 sqrat 中修复了这个问题

标签: c++ scripting-language squirrel-sql


【解决方案1】:

对不起,我应该在问这个问题之前尝试一下。 我下载了 0.8.9 版本,这是 sqrat 的“最新版本”,正如他们主页上所说的那样。它可能是最新的稳定版本。

无论如何,我现在使用来自https://github.com/Amorph/sqrat/ 的 sqrat 尝试了完全相同的事情 它奏效了!除了我不得不改变这一行

return sq_throwerror(vm, "No overload matching this argument list found");

进入

return sq_throwerror(vm, _SC("No overload matching this argument list found"));

【讨论】:

    猜你喜欢
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    • 2016-06-13
    相关资源
    最近更新 更多