1

クラスをバインドするプログラムをコンパイルして、リス スクリプトで使用できるようにしようとしています。

私は Windows 7 で VS2010 を使用しており、リス ライブラリと 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();

}

編集:エラーを与える行は次のとおりです。

InitClass(typeid(*this).name());
4

1 に答える 1

1

申し訳ありませんが、ここで質問する前にこれを試しておくべきでした。ホームページにあるように、sqratの「最新バージョン」であるバージョン0.8.9をダウンロードしました。おそらく最新の安定版です。

とにかく、 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"));
于 2013-07-07T21:02:59.930 に答える