社区
ATL
帖子详情
脚本引擎的深入探讨
sensation
2004-08-27 02:23:14
在利用MS的IActiveScriptSite,IActiveScriptParse和IActiveScript这3个接口做一个JScript的脚本引擎的时候,发现脚本引擎里面使用的COM的生命周期很难控制。根本不自动引擎什么时候释放它所CreateObject起来的COM对象。尤其是自己Invoke脚本里面的一个函数,传入一个IDispatch *的时候,脚本引擎更是莫名其妙了。有高人来探讨一下吧。
...全文
138
5
打赏
收藏
脚本引擎的深入探讨
在利用MS的IActiveScriptSite,IActiveScriptParse和IActiveScript这3个接口做一个JScript的脚本引擎的时候,发现脚本引擎里面使用的COM的生命周期很难控制。根本不自动引擎什么时候释放它所CreateObject起来的COM对象。尤其是自己Invoke脚本里面的一个函数,传入一个IDispatch *的时候,脚本引擎更是莫名其妙了。有高人来探讨一下吧。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
没看明白
把你的问题重现的步骤写一下
{必牛}[2D网络游戏
引擎
][第一课 开发环境部署]
在本课程中,我们将
深入探讨
如何为2D网络游戏开发配置必要的环境。这通常是任何游戏开发项目的首要步骤,因为它为后续的编程、设计和测试工作奠定了基础。2D网络游戏
引擎
是创建此类游戏的核心工具,它提供了图形渲染...
{必牛}[2D网络游戏
引擎
][第九课 地图编辑器 (五)]
在“第九课 地图编辑器 (五)”中,我们可能会
深入探讨
更高级的主题,比如自定义
脚本
功能、优化地图大小、高级的图层混合效果,或者是与其他系统(如游戏逻辑或AI)的集成。通过学习这部分内容,开发者将能够更熟练地...
{必牛}[2D网络游戏
引擎
][第十六课 地图编辑器(十二)]
在本教程中,我们将
深入探讨
地图编辑器的第十二个部分,它对于理解游戏场景的设计与实现至关重要。地图编辑器是游戏开发中的核心组件之一,它允许开发者直观地创建、修改和管理游戏世界的各个层面。 地图编辑器通常...
{必牛}[2D网络游戏
引擎
][第四课 图片资源编辑器(三)6]
在本课程中,我们主要探讨的是2D网络游戏
引擎
的开发,特别是关于图片资源编辑器的使用。这在游戏开发中是非常关键的一部分,因为图像资源是构成游戏...本课程将
深入探讨
这个主题,帮助你成为更加出色的2D游戏开发者。
Unity3D 游戏
引擎
之平面小球重力感应详解
在本教程中,我们将
深入探讨
如何利用Unity3D实现平面小球的重力感应功能,尤其针对iPhone、iPad等iOS设备进行优化。这一特性使得游戏体验更加真实,增强了玩家的沉浸感。 首先,我们需要理解Unity3D中的物理系统。...
ATL
3,248
社区成员
48,531
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章