社区
ATL
帖子详情
脚本引擎的深入探讨
sensation
2004-08-27 02:23:14
在利用MS的IActiveScriptSite,IActiveScriptParse和IActiveScript这3个接口做一个JScript的脚本引擎的时候,发现脚本引擎里面使用的COM的生命周期很难控制。根本不自动引擎什么时候释放它所CreateObject起来的COM对象。尤其是自己Invoke脚本里面的一个函数,传入一个IDispatch *的时候,脚本引擎更是莫名其妙了。有高人来探讨一下吧。
...全文
188
5
打赏
收藏
脚本引擎的深入探讨
在利用MS的IActiveScriptSite,IActiveScriptParse和IActiveScript这3个接口做一个JScript的脚本引擎的时候,发现脚本引擎里面使用的COM的生命周期很难控制。根本不自动引擎什么时候释放它所CreateObject起来的COM对象。尤其是自己Invoke脚本里面的一个函数,传入一个IDispatch *的时候,脚本引擎更是莫名其妙了。有高人来探讨一下吧。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
purpleclouds
2004-08-28
打赏
举报
回复
?delete pMsg怎么能这样
COM对象都是通过Release的方式释放的,
你直接Delete了,还有什么生命周期可言
蒋晟
2004-08-28
打赏
举报
回复
http://dev.csdn.net/article/21/21702.shtm
引用计数初始化为1
sensation
2004-08-27
打赏
举报
回复
举个例子:
脚本里面的一个函数ABC
function ABC(Msg){
i = Msg.GetType();
//GetType就返回一个int了,这里的Msg实际上是个IDispatch *
}
我的C++代码:
CMyMessage * pMsg = new CMyMessage();
//CMyMessage,从CCmdTarget继承下来,提供一个GetType()方法。
m_pScript.Execute("ABC",(LPDISPATCH)pMsg.GetInterface(&IID_IUnkown));
delete pMsg; //加这句,过那么不确定的几秒钟,就报错。不加,就不错
//估计是因为脚本引擎也要pMsg->Release的原因。
sensation
2004-08-27
打赏
举报
回复
C++类一个:CScript:
作用:封装了脚本引擎,提供一个Execute方法来执行脚本里面的一个函数,比如:
Execute("ABC",param1); //ABC是脚本里面的一个函数 function ABC(param1){....}
现在的问题是,当我把IDispatch *这样的参数传入脚本里面的时候,脚本可以访问到这个COM对象的方法和属性,但是当脚本的函数结束的时候,脚本引擎好像会自动释放我传入的那个COM对象,但是这个对象并不是在脚本里面CreateObject出来的啊,而是我在C++代码里面传入的,现在我在C++代码里面一删除这个COM,脚本就会报错。
蒋晟
2004-08-27
打赏
举报
回复
没看明白
把你的问题重现的步骤写一下
.NET简谈
脚本
引擎
系列(一:认识
脚本
引擎
)
提到
脚本
,大家都耳熟能详但是默默无私奉献的
脚本
引擎
都被大家所忽略,本人也是最近才开始接触
脚本
引擎
的技术的,是我的恩师指点我去学习它, 真是不用不不知道,一用吓一跳;如果我们能熟练的使用
脚本
引擎
,那么将大大增加我们系统的灵活性;一开始不太理解这个技术,
脚本
引擎
听起来感觉很厉害,自从了解了
脚本
引擎
的技术后对一些
脚本
语言的执行也多了一步的认识,不管是我们B/S中常用的Javascript、vbscrip
游戏
引擎
:
脚本
与底层
引擎
的协作机制
游戏开发采用“
脚本
+
引擎
”分层架构,平衡灵活性与性能需求:上层
脚本
(Lua/Python/C#)处理可迭代的游戏逻辑,底层
引擎
(C++)负责高性能渲染与物理计算。双方通过接口绑定实现功能调用,采用事件系统进行状态同步。主流
引擎
实现各具特色:Unity通过Mono桥接C#与C++,Unreal支持蓝图与C++混合编程,Cocos2d-x则以Lua
脚本
为主。优化关键在于减少交互开销,通过批量处理和数据缓存提升效率。这种架构既满足快速开发需求,又能保证核心性能,成为现代游戏开发的标准范式。
Java动态执行秘籍:
脚本
引擎
与代码实现技巧
Java
脚本
引擎
是Java平台的一部分,它允许Java应用程序在运行时执行
脚本
语言编写的代码。Java提供了和接口来管理和执行
脚本
。常见的
脚本
引擎
包括JavaScript
引擎
(如Nashorn,但在Java 15中已被移除)、Groovy
引擎
、Python
引擎
等。本文
深入探讨
了Java中的动态执行机制,包括
脚本
引擎
的使用和代码实现的技巧。通过学习和掌握这些技巧,开发者可以编写出更加灵活和强大的Java应用程序。
[翻译计划]
脚本
引擎
实现
原文标题:Implementing A Scripting Engine原文地址:http://www.flipcode.com/articles/scripting_issue01.shtml作者:Jan Niestadt目录 Implementing A Scripting Engine - Part 1 - Overview [Tony Qu][完成] Implemen
flowable 6.4.2 -
脚本
引擎
. org.flowable.common.engine.impl.scripting.ScriptingEngines public class ScriptingEngines { public static final String DEFAULT_SCRIPTING_LANGUAGE = "juel"; public static final String GROOVY_SCRIPTING_LANGUAGE = "groovy"; private final Scri
ATL
3,248
社区成员
48,530
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章