2013-07-07 6 views
1

Я пытаюсь скомпилировать программу, которая связывает класс, чтобы я мог использовать его с белым скриптом.Squirrel, sqrat, error when binding class

Я использую VS2010 под Windows 7 и скомпилировал библиотеки squirrel и sqrat, используя набор символов Unicode с конфигурацией отладки.

Я получаю ошибку в \ 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(); 

} 

EDIT: Строка, которая дает ошибку является:

InitClass(typeid(*this).name()); 
+0

Это поможет, если вы указали более ясно, какая линия дает ошибку, так как нет ни одной линии +81 здесь ... И вы не показываете \ sqrat \ sqratclass.h и/или sqrat.h код – Antonio

+0

@Antonio строка, которая дает ошибку, - InitClass (typeid (* this) .name()); – Alex

+0

Кроме того, если это помогает, я использую sqrat 0.8.90 и squirrel 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"));