社区
VC.NET
帖子详情
如何在__gc类中声明并使用_nogc类?
prowan
2003-09-12 09:15:06
如下代码,在vs2003中编译是不能通过的,该如何办?
namespace nsSplSession
{
class CTest
{
public:
CTest()
{
}
~CTest()
{
}
};
public __gc class UseTest
{
private:
CTest* m_pTest;
public:
UseTest()
{
m_pTest = new CTest();
}
};
}
...全文
39
回复
打赏
收藏
如何在__gc类中声明并使用_nogc类?
如下代码,在vs2003中编译是不能通过的,该如何办? namespace nsSplSession { class CTest { public: CTest() { } ~CTest() { } }; public __gc class UseTest { private: CTest* m_pTest; public: UseTest() { m_pTest = new CTest(); } }; }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
XLua_2018最新版
## C#下Lua编程支持 xLua为Unity、 .Net、 Mono等C#环境增加Lua脚本编程的能力,借助xLua,这些Lua代码可以方便的和C#相互调用。 ## xLua的突破 xLua在功能、性能、易用性都有不少突破,这几方面分别最具代表性的是: * 可以运行时把C#实现(方法,操作符,属性,事件等等)替换成lua实现; * 出色的
GC
优化,自定义struct,枚举在Lua和C#间传递无C#
gc
alloc; * 编辑器下无需生成代码,开发更轻量; 更详细的特性、平台支持介绍请看[这里](Assets/XLua/Doc/features.md)。 ## 安装 打开zip包,你会看到一个Assets目录,这目录就对应Unity工程的Assets目录,保持这目录结构放到你的Unity工程。 如果希望安装到其它目录,请看[FAQ](Assets/XLua/Doc/faq.md)相关介绍。 ## 文档 * [常见问题解答](Assets/XLua/Doc/faq.md):常见问题都总结在这里,初
使用
大多数问题都可以在这里找到答案。 * (必看)[XLua教程](Assets/XLua/Doc/XLua教程.md):教程,其配套代码[这里](Assets/XLua/Tutorial/)。 * (必看)[XLua的配置](Assets/XLua/Doc/configure.md):介绍如何配置xLua。 * [热补丁操作指南](Assets/XLua/Doc/hotfix.md):介绍如何
使用
热补丁特性。 * [XLua增加删除第三方lua库](Assets/XLua/Doc/XLua增加删除第三方lua库.md):如何增删第三方lua扩展库。 * [XLua API](Assets/XLua/Doc/XLua_API.md):API文档。 * [生成引擎二次开发指南](Assets/XLua/Doc/custom_generate.md):介绍如何做生成引擎的二次开发。 ## 快速入门 一个完整的例子仅需3行代码: 安装好xLua,建一个MonoBehaviour拖到场景,在Start加入如下代码: ```csharp XLua.LuaEnv luaenv = new XLua.LuaEnv(); luaenv.DoString("CS.UnityEngine.Debug.Log('hello world')"); luaenv.Dispose(); ``` 1、DoString参数为string,可输入任意合法的Lua代码,本示例在lua里调用C#的UnityEngine.Debug.Log打印了个日志。 2、一个LuaEnv实例对应Lua虚拟机,出于开销的考虑,建议全局唯一。 C#主动调用lua也很简单,比如要调用lua的系统函数,推荐方式是: *
声明
```csharp [XLua.CSharpCallLua] public delegate double LuaMax(double a, double b); ``` * 绑定 ```csharp var max = luaenv.Global.GetInPath("math.max"); ``` * 调用 ```csharp Debug.Log("max:" + max(32, 12)); ``` 建议绑定一次,重复
使用
。生成了代码的话,调用max是不产生
gc
alloc的。 ## 热补丁 * 侵入性小,老项目原有代码不做任何调整就可
使用
。 * 运行时影响小,不打补丁基本和原有程序一样。 * 出问题了可以用Lua来打补丁,这时才会走到lua代码逻辑; [这里](Assets/XLua/Doc/hotfix.md)是
使用
指南。 ## lua5.3 vs luajit xLua有两个版本,分别集成了lua5.3和luajit,一个项目只能选择其一。这两个版本C#代码是一样的,不同的是Plugins部分。 lua5.3的特性更丰富些,比如支持原生64位整数,支持苹果bitcode,支持utf8等。出现问题因为是纯c代码,也好定位。比起luajit,lua对安装包的影响也更小。 而luajit胜在性能,如果其jit不出问题的话,可以比lua高一个数量级。目前luajit作者不打算维护luajit,在找人接替其维护,后续发展不太明朗。 项目可以根据自己情况判断哪个更适合。因为目前lua53版本
使用
较多,所以xLua工程Plugins目录下默认配套是lua53版本。 ## 更多示例 * [01_Helloworld](Assets/XLua/Examples/01_Helloworld/):
xlua复杂值
类
型的
gc
问题
前言 Unity下的C#
GC
Alloc(下面简称
gc
)是个大问题,而嵌入一个动态
类
型的Lua后,它们之间的交互很容易就产生
gc
,各种Lua方案也把这作为性能优化的重点。这些优化说穿了其实不复杂。 元凶在这里 先看看这两个函数 int inc1( int i) { return i + 1; } object inc2( object o) { return ( int )o + 1; } window下实测inc1的性能是inc2的20倍! 差距为什么那么大?主要原因
C++/CLI的简单介绍。from维基百科们,http://zh.wikipedia.org/zh-cn/C%2B%2B/CLI
C++/CLI 维基百科,自由的百科全书 C++/CLI(CLI:CommonLanguageInfrastructure)在计算机语言中是一门由微软设计,用来代替C++托管扩展(下文
使用
MC++指代)的语言。这门语言在兼容原有的C++标准的同时,重新简化了托管代码扩展的语法,提供了更好的代码可读性。和微软.NET的其他语言一样,微软向ECMA提交了C...
C++.net中的常见问题一(关于数组)
通过C++扩展, 可以用关键字__
gc
来
声明
__
gc
数组,或者用托管
类
型来
声明
数组。由于__
gc
数组被创建在托管堆上,所以它在
声明
和
使用
上,和标准(非托管
类
型)数组相比,有其额外的标准与特点。__
gc
类
型数组被动态创建于托管堆上,数组元素的数量不属于它定义的内容,同一个数组变量可以指向不同长度的数组。例如:System::Int32 arr[] = __
gc
new System::I
xlua学习4 值传递避免
gc
定义方法
声明
一些方法,结构体,接口,作为测试对象 对于只包含值
类
型的结构体我们可以加
GC
Optimize标签,让xlua生成代码,优化
gc
不要忘记在xlua中生成代码 [
GC
Optimize]//只包含值
类
型的结构体,可以打
GC
Optimize标签,并生成代码,优化
gc
[LuaCallCSharp]//lua中
使用
C#,打标签生成代码做优化,否则会
使用
反射的方式访问,非常耗资源 ...
VC.NET
7,540
社区成员
27,673
社区内容
发帖
与我相关
我的任务
VC.NET
.NET技术 VC.NET
复制链接
扫一扫
分享
社区描述
.NET技术 VC.NET
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章