因此,在设置我的脚本库一段时间后,请重新看一下它。并且,它起作用。我现在的问题是试图将其打包到一个抽象库中。
我的问题在于实现。总体目标是为每个脚本引擎创建一个DLL,并根据每个脚本的需要对其进行加载和绑定。
现在,我可以执行:
SqurrelEnviroment* e = new Squrrelnviroment();
更改为:
ScriptEnviroment* e = loadFromDll("Squrrel.dll");
那很好,现在可以进行更改了
SqurrelClass<MyClass>* myclass = e->bindClass<MyClass>("MyClass");
myclass->bindFunction(&MyClass::Foo,"foo");
scriptfile.nut
local temp = MyClass();
temp.foo();
里面有一些复杂的表绑定和其他函数调用。 现在,当我将其转换为使用基类时,问题开始出现。最初,我预成型:
template<class T>
SqurrelClass<T>* SqurrelEnviroment::bindClass(const std::string& classname);
但是当我将其转换为使用更多的基类时,我开始运行虚拟模板函数。
template<class T>
ScriptClass<T>* ScriptEnviroment::bindClass(const std::string& classname) = 0;
在网络上喜欢提醒我是不可能的。
我尝试过的每种解决方法都不适合我的实现。我知道松鼠的其他绑定实用程序。这是为了更广泛,并使用“表格”数据绑定样式接受其他语言。
我尝试过的事情:
那还有什么替代品?我希望仍然能够为每种语言使用已经存在的绑定实用程序。我能想到的唯一解决方案是为每种语言编写自己的绑定实用程序,这完全违背了该目的。