2013-07-07 25 views
1

我想编译一个绑定类的程序,以便我可以将它与松鼠脚本一起使用。松鼠,sqrat,绑定类时出错

我在Windows 7下使用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中的错误?非常感谢你!

这是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

如果你指定的更清楚这行给出了错误,因为没有线81在这里这将有助于...你没有显示\ sqrat \ sqratclass.h和/或sqrat.h代码 – Antonio

+0

@Antonio提供错误的行是InitClass(typeid(* this).name()); – Alex

+0

另外,如果它可以帮助我使用sqrat 0.8.90和松鼠3.0.4 – Alex

回答

1

对不起,我应该问的问题在这里品尝过。 我下载了0.8.9版本,它是sqrat的“最新版本”,就像它在主页上说的那样。这可能是最新的稳定版本。

无论如何,我现在尝试使用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"));