??xml version="1.0" encoding="utf-8" standalone="yes"?>
Z克服array必须事先宣告大小的不便,STL?NET都有解决的方式,在STL的container当中Q速度最快的是std::vectorQ?NET当中是ArrayListQ所以我x试在同样的程序中Q若使用unmanaged 的std::vector是否会比managed ArrayList快?br />
执行l果
执行l果令我讶异Q我原本预期unmanaged的std::vector应该会比较快Q但l果却是managed的ArrayList较快Q我觉得可能的原因是Qmanaged的数据放在CLR内,而unmanaged数据攑֜不同的地方,当unmanaged的std::vector要在managed的执行环境中昄Ӟq要l过marshaling的动作,所以浪费了一些时_cM?NET中用COM的dllӞ也必ȝqmarshalingQ所以速度较慢?br />
回到我第一个问题,用C++开发ASP.NET有什么好?在这个简单的E序里可以发玎ͼC++/CLI的最大特Ԍ让你可以managed和unmanagedE序写在一P同时使用.NET Framework和传lC++的libraryQ如STL、boostQ这是C#所做不到的Q假如你的工E领域已l有很多libraryQ是用C/C++写的Q可能是10几年前的东西Q目前根本没有C#版本的libraryQ而你又急需q些library的function开?NETE序QC++/CLI很方便了,让你同时拥抱C/C++ library?NET FrameworkQ这也是Microsoft开发C++/CLI的原因?br />
l论
在C++/CLI开发managed codeQ执行速度不会比C#、VB快,虽然C++/CLI可以开发unmanaged codeQ但?NET Framework有相对应的支持时Q应先考虑.NET FrameworkQ然后再考虑其它C++自己的libraryQ当然C++/CLI不见的适合所有开发h员,但对于一些开发h员是很方便的?br />
q种开发方式生产力q不高,若只是开发学习用的小E序则媄响不大,但若要开发大型项目时Q程序案个C多,需要用project或solution的方式管理;且debug时breakpoint的加入,单步执行Q观察变量变化等Q都需要更可视化的方式才能够增加生产力Q最重要的,׃现在的程序语a皆非常的庞大Q又有复杂的函式库,要程序员熟记所有的E序语法和function名称Q实在很困难Q所以语法提C?Intellisense)的功能就非常重要Q这些就必须靠IDE来达成?/p>
在Windowsq_上,若要开发C/C++E序Q我们有Microsoft Visual Studio、Borland C++ Builder可用Q这些都是很好用的IDEQ但可惜仅能在Windows下用,但是在Linuxq_?Z以下理由Q我推荐使用Eclipse开发C/C++E序Q?br />
1. Eclipse是一个用Java所撰写IDEQ因此可跨^収ͼ所以在Linux和Windowsq_下皆可用EclipseQ可降低E序员熟析IDE的学习曲Uѝ?br />
2. Eclipse虽然主要拿来开发JavaE序Q但事实上EclipseZ个『万用语a』的IDEQ只要挂上plugin后,可以在Eclipse开发各U语aE序Q所以我们只要挂上CDT(C/C++ Development Toolkit)后,可以在Eclipse开发C/C++E序Q除此之外,目前的主程序语aQ如C/C++、C#、Java、PHP、Perl、Python、Ruby、Rebol、JavaScript、SQL、XML、UML{,皆可在Eclipse上撰写,所以只要熟析Eclipse的IDE环境Q将来若开发其它语aE序Q就不用再重新学习IDE环境了?br />
3. 最重要的,Eclipse和CDT是Open Source且完全免费,取得相当ҎQ事实上Fedora 5已经包含Eclipse和CDT了,虽然预设Fedara 5安装时ƈ没有含EclipseQ只要手动另外加选即可?/p>
B. 如何在Linux下安装Eclipse和CDT?
i. 由Linux Distribution安装EclipseQFedora 5内含Eclipse和CDT?br />
ii. 手动安装
1. 下蝲案
A、 下载JRE(Java Runtime Environment) ?http://java.sun.com/javase/downloads/index.jsp)
B、 下载Eclipse SDK?http://www.eclipse.org/downloads/)
C、 下载CDT?http://www.eclipse.org/cdt/downloads.php)
2. 安装
A、 安装JRE
i. [root@localhost ~]#mkdir /usr/local/java
ii. (档案jre-1_5_0_09-linux-i586-rpm.bin下蝲?usr/local/java目录?
iii. (用户模式)
[root@localhost ~]#su
iv. [root@localhost ~]#cd /usr/java
v. (您所下蝲的的权限更改ؓ可执?
[root@localhost java]#chmod a+x jre-1_5_0_09-linux-i586-rpm.bin
vi. (启动安装q程)
[root@localhost java]#./jre-1_5_0_09-linux-i586-rpm.bin
(此时显CZq制许可协议Q按控格昄下一,d许可协议后,输入 『yes』l安装。此时会解压羃Q生jre-1_5_0_9-linux-i586.rpm)
vii. (安装jre-1_5_0_9-linux-i586.rpm)
[root@localhost java]#rpm –ivh jre-1_5_0_9-linux-i586.rpm
(此时会将JRE装在/usr/java/jre1.5.0_09目录?
viii. (讑֮环境变量Q让Linux能找到JRE)
[root@localhost java]#vi /etc/profile
(以下内容加入在案后面)
(存盘后,重新启动Linux)
ix. (试Java是否安装成功)
[root@localhost ~]#java –version
B、 安装Eclipse SDK
i. (档案eclipse-SDK-3.2.1-linux-gtk.tar.gz下蝲到桌?
ii. [root@localhost ~]#cd /usr/local
iii. [root@localhost local]#cp ~Desktop/eclipse-SDK-3.2.1-linux-gtk.tar.gz .
iv. (eclipse-SDK-3.2.1-linux-gtk.tar.gz解压~?
[root@localhost local]#tar –zxvf eclipse-SDK-3.2.1-linux-gtk.tar.gz
v. [root@localhost local]#cd eclipse
vi. (执行Eclipse)
[root@localhost eclipse]#./eclipse
vii. (Select a workspace)
(Use this as the default and do not ask again打勾Q以后就不会出现q个H口)
(W一ơ执行Eclipse会出现此errorQ因为没有Q何Eclipse讑֮,所以无法读取,W二ơ执行Eclipse无此错误讯息,按OKl箋?
(Eclipseȝ?
C?安装CDT
i. (案org.eclipse.cdt-3.1.1-linux.x86.tar.gz下蝲到桌?
ii. [root@localhost ~]#cp ~/Desktop/org.eclipse.cdt-3.1.1-linux.x86.tar.gz .
iii. (org.eclipse.cdt-3.1.1-linux.x86.tar.gz解压~?
[root@localhost ~]#tar –zxvf org.eclipse.cdt-3.1.1-linux.x86.tar.gz
(案解到~/eclipse目录?
iv. (安装CDT plugin)
[root@localhost ~]cp –r eclipse/plugins/. /usr/local/eclipse/plugins/
v. (启动EclipseQ多了C和C++ Project支持)
C. 如何在Eclipse上开发C/C++E序?
i. 建立Hello Word project
1. 建立C/C++ project
2. 选择Managed Make C++ Project(若选择Managed Make C++ ProjectQEclipse会自动ؓ我们建立make fileQ若选择Standard Make C++ ProjectQ则必须自己写make file?
3. 输入Project name
4. 选择Projectcd(如执行档或LibraryQ这里选择执行即?
5. 额外的设?br />
6. Open Associated Perspective?(选Yesl箋)
7. 建立C++ Source File
8. 输入C++ Source File檔名
9. 输入C++E序代码
10. 执行E序(昄在下方的Console?
ii. 如何在Eclipse CDT中Debug C/C++E序?
1. 在Eclipse中DebugQ就如同在一般IDE中Debug一P只要在程序代码的左方按两下,可加入breakpoint?br />
2. 启动Debug
3. Debug讑֮Q按Debug开始Debug
4. 单步执行Q显C变量变?br />
E. l论
Eclipse为Linux在C/C++开发提供一个完善的IDE环境Q事实上Q以我用q众多IDE的经验,除了Visual Studio最方便外,Eclipse的好用也直追Visual StudioQƈ且超Borland C++ Builder及Dev C++Q虽然安装上比较ȝQ但只要依照本文介绍一步一步的讑֮Q就一定可完成Eclipse讑֮Q若惌在Windowsq_使用gcc compilerQ也使用Eclipse + CDT + MinGW的组合?br />
See Also
[转蝲] Eclipse + CDT + MinGW 安装Ҏ
Reference
1. 为Linux手动下蝲和安装Java Runtime Enrironment(JRE)的说?br />(http://www.java.com/zh_CN/download/help/5000010500.xml)
2. Eclipse 3.0 CDT on Linux
(http://www.autexier.de/jmau/dev/CDT/cdt.html)
最后只要将HelloWorld.aspx攑ֈc:\Inetpub\wwwroot\下,HelloWorld.dll攑ֈc:\Inetpub\wwwroot\bin\下,完成deployment?br />
l论
很多C++无法开发ASP.NETQANSI C++的确不能Q但C++/CLI则可以,事实上,M.NET下的语言都可以开发ASP.NETQ虽然Visual Studio 2005工具不见的支持,但只要透过一些小技巧,你依然可以用妛_Ƣ的.NET语言开发ASP.NET?br />
Reference
ASP.NET with Managed C++ , Soliant, The code project.