脚本语言为c++
Scripting Language for C++
我有使用脚本语言的需求,但是我有一个可怕的需求列表。我们的工作站(PS2 Linux)不允许我们拥有管理员权限,而且GCC的版本也很旧)。
谁能推荐一种脚本语言…
- Linux
- gcc 2.95.2:
- 不需要admin访问
- 易于与c++集成
- 不需要额外的库
- 没有提升(这对大学的网络驱动器来说太大了,我已经抱怨过很多次了,但他们觉得1g适合所有学生,无论计算机课程还是护理课程。)
脚本将为游戏对象做少量的逻辑。
Luabind将是我的第一选择,但boost使它不可能,并且由于工作站一直重置,我将不得不重新安装所有内容:(
我想推荐Angelscript:
http://www.angelcode.com/angelscript/它很容易与c++集成,并且具有线程和所有功能。示例集成:
r = engine->RegisterGlobalFunction("void print(const string &in)", asFUNCTION(print), asCALL_CDECL); assert( r >= 0 );
你再容易不过了。类具有相同的语法,但是是asMETHOD而不是asFUNCTION。它还支持导出类,拥有工厂,并附带一些预置,如字符串和数学。这门语言本身是c++、Java和Python的混合体,但非常好。
试一试,一旦我知道如何使用它,我就爱上了它。
我尝试过的脚本语言没有像Angelscript这样容易集成。我尝试了很多,比如Python, LUA, Javascript等等。
编辑:一些代码从我的程序,显示一个类的集成为您:
// Registering the interface to angelscript
void NLBoundingBox::registerWithAngelScript( asIScriptEngine* e )
{
AS_ERR_CHECK(e->RegisterObjectType("NLBoundingBox", 0, asOBJ_REF));
AS_ERR_CHECK(e->RegisterObjectMethod("NLBoundingBox", "bool intersects(const NLBoundingBox@)", asMETHOD(NLBoundingBox, intersects), asCALL_THISCALL));
AS_ERR_CHECK(e->RegisterObjectMethod("NLBoundingBox", "bool isPointInside(f32 x, f32 y)", asMETHODPR(NLBoundingBox, isPointInside, (f32,f32), bool), asCALL_THISCALL));
AS_ERR_CHECK(e->RegisterObjectMethod("NLBoundingBox", "void translate(f32 x, f32 y)", asMETHODPR(NLBoundingBox, translate, (f32,f32), void), asCALL_THISCALL));
AS_ERR_CHECK(e->RegisterObjectMethod("NLBoundingBox", "void translateTo(f32 x, f32 y)", asMETHODPR(NLBoundingBox, translateTo, (f32,f32), void), asCALL_THISCALL));
AS_ERR_CHECK(e->RegisterObjectMethod("NLBoundingBox", "void rotateAroundCenter(f32 angle)", asMETHOD(NLBoundingBox, rotateAroundCenter), asCALL_THISCALL));
// Behaviour: Factory and Refs
AS_ERR_CHECK(e->RegisterObjectBehaviour("NLBoundingBox", asBEHAVE_FACTORY, "NLBoundingBox@ NLBoundingBox()", asFUNCTIONPR(factory, (void), NLBoundingBox*), asCALL_STDCALL));
AS_ERR_CHECK(e->RegisterObjectBehaviour("NLBoundingBox", asBEHAVE_RELEASE, "void NLBoundingBox()", asMETHOD(NLBoundingBox, release), asCALL_THISCALL));
AS_ERR_CHECK(e->RegisterObjectBehaviour("NLBoundingBox", asBEHAVE_ADDREF, "void NLBoundingBox()", asMETHOD(NLBoundingBox, addRef), asCALL_THISCALL));
}
只用Lua,不要用他们的机器。如果必须,请将完整的开发环境和依赖项保存在闪存驱动器上。Lua是这方面的行业标准。
相关文章:
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- Express服务器中语言子域的最佳实践
- 我想在Javascript中探索类似C语言的字符串的整个字符
- 我们可以使用任意的编程语言来动态化HTML页面吗
- 下载所选语言的pdf文件
- keith wood日期选择器日期格式和语言
- 为现有Roslyn语言lexer/parser选择基于javascript的代码编辑器
- 正如我所能做的引导提醒,按下一个按钮可以更改语言
- 量角器-如何在量角器中设置默认的打字语言
- Javascript/jQuery替换tamil语言输入框中的最后一个单词
- 如何获取整个laravel语言(本地化)数据
- 如何覆盖jqGrid's语言默认值
- moment.js年份/数字格式,阿拉伯语言环境
- 我使用什么语言来创建像Webly这样的拖放功能
- Porting duff's设备从C语言转换为JavaScript
- 如何更改web应用程序的语言.有没有这样的api
- 我可以用JavaScript判断访问者是否'的语言环境遵循美国风格或世界其他地区's风格
- 获取每种语言的跨度标题,并插入新的跨度中
- TinyMCE使用Javascript动态更改语言
- JavaScript 和其他使用松散定义的变量的语言