当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: ============================在C++
 

 

 ·skype?    »显示摘要«
    摘要:1.据说是kazaa那个公司做的,对于kazaa倒是用了几年了,因为捆绑了许多广告,现在用的是kazaa lite。对于寻找mp3来说,kazaa的确是强大和好用。 晚上得试试这个skype。2. 2004-10-27晚, 试过了,原来就是个聊天工具,不过可以直接打电话。 什么是 skype? skype 是一种简单的免费软件,使您能够在数分钟之内在世界上的任何角落拨打免费电话。 skype ......
 ·[gdi+] colormatrix 彩色矩阵     »显示摘要«
    摘要:首先对装配脑袋给出上两片文章的友好回复,还有网友fisherman一起探讨colormatrix话题表示感谢!colormatrix (彩色矩阵) 类位于system.drawing.imaging命名空间 先看看下面的代码 colormatrix cm = new colormatrix(new float[][]{ new float[]{0.5f,0.5f,0.5f,0,0}, new......


关于C++/CLI中的Interop问题的思考
============================

在c++/cli中如何让你的managed code与unmanaged(native) code沟通自如?interior_ptr与pin_ptr是桥梁——interior_ptr充当一个managed heap上的native pointer的角色.而pin_ptr则可以把对象钉在managed heap上! 【程序编程相关:在ASP.NET中动态创建柱状图和饼图

【推荐阅读:在DataGrid中为Footer添加自

所以,pin_ptr允许把managed世界里的东西带入unmanaged(native)世界. 【扩展信息:如何拍摄高质量数码照片

而如果想反其道而行,即把unmanaged(native)世界里的东西带入managed世界,则可以自己写一个ref/value class的wrapper(目前),以后微软打算允许native class在managed heap上创建,并且允许ref class在栈上创建(彼时ref class关键字是否还有存在的价值?),从而允许更为方便的交互.

但是这里的问题是,基本上这种交互都是处于“基本类型的数据”层次的交互.pin_ptr只能把基本类型钉在managed heap上,也就是说,你可以写:

pin_ptr<int> p = ...;

却不能写

pin_ptr<gc_class> p = ...; //错误!

这是因为.net的对象模型与native c++的对象模型是不兼容的,即使可以把gc_class的对象钉在gc堆上并返回其首地址,也不能把它作为一个native class类对象来用.反之亦然.

下面是关于这个问题的一些思考...很零碎:)

声明:这是与孟岩老师一次email内容的整理.请不要转载

===========================

孟老师,昨天我们聊到的关于managed与unmanaged代码如何在对象层面沟通问题,我后来想了一下,还与我的一个朋友讨论了许久,我的看法是这样的:

 

您记得.net&com interopration吗?它面对的不正是native类与managed类的对象模型的不一致的问题吗?那它是怎么解决的呢?用wrapper——如果要在com (对应于我们说的native code)中调用.net的类提供的服务,clr运行层会负责为.net对象创建一个wrapper,这个wrapper仅仅是个proxy,充当虚函数转发器,由于clr可以通过查询元数据得知.net类的一切信息,所以创建一个wrapper非常容易.
...   下一页
    摘要:我们开发数据库应用时,常常需要用到模糊查询。如果同一个条件需要匹配很多字段怎么办呢?通常,程序员会每个字段都在sql中“field like ´%cond%´”一次。这样,sql语句会长得惊人,碰上复杂一点的,甚至sql语句会因为超长而被数据库拒绝执行。其实,这个问题只要动动脑筋就很容易解决:首先,将要匹配相同条件的字段连起来(field1+fiel......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE