托管C++ 是非托管代码和托管代码之间的一个桥梁

原创 2008年09月28日 08:41:00

    以前一直使用VC++作为混饭的工具,也写了一些 可以重用的代码,开始时是源代码重用,后来可重用代码多了起来,发现源代码重用很是不爽,不但要来回粘贴代码,偶尔修改一下还要把修改后的代码单独保存起来,以保持最新。

    于是,我决定要再向前进化一步,使用VC++提供的扩展动态库。不用不知道,果然爽极,可重用代码的维护被限定在一个扩展动态库的项目之内,无论何时改变代码,再也不需要操心更新的问题了,其他的应用项目只使用即可。不过微软的MFC扩展动态库虽然可以导出类,但据微软说明,其制能用在VC++中,也就是说我费尽心机,耍尽小心眼写的DLL不能被别的开发工具使用,这还谈什么重用和共享?为此我从来都不敢和别人说自己写的东东能共享,如果一哥们说:拿来我i用一下!我还得解释这个只能怎么怎么样.... 一定必定以及肯定落个“扯淡”的下场。

    近段时间,我使用C#作一个东西,其中要用到网格插值及加密算法,这些东东以前写的有C++代码,我看了一下,如果把它转换成C#代码也可以,不过太过残酷,怎么办?老天救我一救吧!其实老天也不会施以援手的,我只有一头扎进M$的M$DN中,象一头饥饿的苍蝇在MSDN这个汪洋大池中寻找哪怕一点有关的INFO.........

    终于有了(不要误会,我乃雄性)一线希望,MSDN中说可以把非托管代码经过封装之后给符合公共语言规范的编程语言使用,这不是说可以给C#使用吗?怎么封装呢?我简单掐指推算了一下:Visual Studio 2008 中包含VC++、C#、VB、VJ等多个工具,如果要封装一定是使用VC++来噢。果然如此,使用VC++的CLR编译选项就可以建立非托管代码和托管代码之间的畅通管道,其中使用Manage C++语法对非托管代码进行封装,比如非托管代码中的数组、内存块指针可以使用 aray<type,dim>^  来封装,然后在C#中会被当作数组使用。

    问题基本解决了,现在我可以在C#中使用VC++写的类了,并且可以使用MFC类,当然都要经过封装。

 

 

 

C++中托管代码

感谢Stanley B. Lippman为我们提供了一篇非常优秀的关于C++/CLI的介绍:   Translation Guide: Moving Your Programs from Mana...
  • fragno
  • fragno
  • 2011年10月31日 16:31
  • 2086

C#托管代码与C++非托管代码互相调用

C#托管代码与C++非托管代码互相调用 http://www.cnblogs.com/Jianchidaodi/archive/2009/03/11/1407270.html#1473515 ...
  • cbbbc
  • cbbbc
  • 2015年12月08日 19:44
  • 1416

托管C++的一次编程经历

最近我发现,从前用一个C#编写的文件管理程序在处理大批量文件的时候,其内存占用量过高(数百兆),而且性能也很不稳定(忽快忽慢,估计和垃圾收集机制有关)。考虑程序本身的因素之后,觉得已经没有多少优化余地...
  • yuhao_programer
  • yuhao_programer
  • 2005年02月16日 13:20
  • 2529

托管C++

1、什么是托管C++?   在回答这个问题,首先要搞清楚什么是"托管"(Managed)。托管是.NET的一个专门概念,它是融于通用语言运行时(CLR)中的一种新的编程理念,因此我们完全可以把"...
  • gao271003105
  • gao271003105
  • 2017年06月06日 09:54
  • 450

您也使用托管C++吗?

  转向.NET后,手头上往往仍有旧的模块要重用。也许这些模块是Delphi写的,也许是C/C++写的,或者是其它编程语言……为了能把它们移植到.NET下,或者是在.NET中调用,To be or n...
  • Muf
  • Muf
  • 2006年04月10日 09:47
  • 11228

两分钟学会在GitHub托管代码

本篇博客针对不会Git的小童鞋,大神们可以绕过,错误之处谢谢指正; 关于GitHub的强大此处不在说明,知道GitHub也有一段时间了,但是一直苦于不会使用。 本篇文章介绍的是如何将工程代...
  • dcj0913
  • dcj0913
  • 2014年10月22日 21:44
  • 622

托管与非托管代码的区别

Unity 性能优化 系列(二)DrawCall
  • bioman1224
  • bioman1224
  • 2016年08月30日 00:04
  • 561

C#中什么是托管什么是非托管??

关键是要了解CLR(公共语言运行时) Common Language RunTime     .Net Framework 是由彼此独立又相关的两部分组成:CLR 和 类库, CLR是它为我们提供...
  • ZCF1002797280
  • ZCF1002797280
  • 2012年10月27日 08:07
  • 748

使用c++实现事件注册

     今天上软件体系结构时,学了一种EventSystem的结构,是java中向控件注册事件等时使用的一种模式.下课时我思考了一下,在c++中使用函数指针可以方便的实现这种方法.下面是我实现了的一...
  • caohao2008
  • caohao2008
  • 2006年11月27日 20:05
  • 1724
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:托管C++ 是非托管代码和托管代码之间的一个桥梁
举报原因:
原因补充:

(最多只允许输入30个字)