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

来源:互联网 发布:剑三捏脸数据成男杨洋 编辑:程序博客网 时间:2024/06/06 04:31

    以前一直使用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类,当然都要经过封装。

 

 

 

原创粉丝点击