??xml version="1.0" encoding="utf-8" standalone="yes"?>99精品国产综合久久久久五月天 ,亚洲国产精品一区二区三区久久,久久99亚洲综合精品首页http://www.shnenglu.com/oomusou/archive/2006/11/12/15055.html?OO无双?OO无双Sun, 12 Nov 2006 03:17:00 GMThttp://www.shnenglu.com/oomusou/archive/2006/11/12/15055.htmlhttp://www.shnenglu.com/oomusou/comments/15055.htmlhttp://www.shnenglu.com/oomusou/archive/2006/11/12/15055.html#Feedback8http://www.shnenglu.com/oomusou/comments/commentRss/15055.htmlhttp://www.shnenglu.com/oomusou/services/trackbacks/15055.html之前我发表了如何用C++开发ASP.NETQ很多h怀疑用C++开发ASP.NET有什么好?执行速度上有M优势?W一个问题将在本随W解{,至于执行速度Q我认ؓ既然都是managed codeQC++/CLI、C#、VB应该都一样快Q但C++/CLI有个特色Q就是能在managed code中写unmanaged codeQ类似C#的unsafe codeQ假如在C++/CLI中用unmanaged codeQ是否能在速度上占便宜?我写了以下的E序作测试?br />

Z克服array必须事先宣告大小的不便,STL?NET都有解决的方式,在STL的container当中Q速度最快的是std::vectorQ?NET当中是ArrayListQ所以我x试在同样的程序中Q若使用unmanaged 的std::vector是否会比managed ArrayList快?br />

 1 /*  
 2 (C) OOMusou 2006  http://oomusou.cnblogs.com
 3
 4 Filename    : VectorVsArrayList.cpp
 5 Compiler    : Visual C++ 8.0
 6 Description : Demo std::vector and ArrayList in C++/CLI
 7 */

 8 #include  " stdafx.h "
 9 #include  < vector >
10 #include  < ctime >
11 #include  < iostream >
12
13 using   namespace  System;
14 using   namespace  System::Collections;
15
16 int  main()
17 {
18      //  Use STL std::vector
19     clock_t t1  =  clock();
20     
21     std::vector < int >  ivec;
22
23      for ( int  i = 0 ; i  !=   10000000 ++ i)  {
24       ivec.push_back(i);
25     }

26
27     t1  =  clock()  -  t1;
28
29     std::cout  <<   " std::vector :  "   <<  ( double )t1 / CLOCKS_PER_SEC  <<   "  sec "   <<  std::endl;
30
31
32      //  Use .NET ArrayList
33     clock_t t2  =  clock();
34
35     ArrayList ^  al  =  gcnew ArrayList;
36      for ( int  i = 0 ; i  !=   10000000 ++ i)  {
37       al -> Add(i);
38     }

39     t2  =  clock()  -  t2;
40
41     std::cout  <<   " .NET ArrayList :  "   <<  ( double )t2 / CLOCKS_PER_SEC  <<   "  sec "   <<  std::endl;
42
43      return   0 ;
44 }

执行l果

1 std::vector :  5.618  sec
2 .NET ArrayList :  4.336  sec
3 請按L늹U? . .


执行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 />



?OO无双 2006-11-12 11:17 发表评论
]]>
如何在Linux使用Eclipse + CDT开发C/C++E序? http://www.shnenglu.com/oomusou/archive/2006/11/11/15020.html?OO无双?OO无双Sat, 11 Nov 2006 12:56:00 GMThttp://www.shnenglu.com/oomusou/archive/2006/11/11/15020.htmlhttp://www.shnenglu.com/oomusou/comments/15020.htmlhttp://www.shnenglu.com/oomusou/archive/2006/11/11/15020.html#Feedback11http://www.shnenglu.com/oomusou/comments/commentRss/15020.htmlhttp://www.shnenglu.com/oomusou/services/trackbacks/15020.html A. Z么要在Linux使用Eclipse开发C/C++E序? 

Linux是一个以C/C++开发ؓȝq_Q无论是Kernel或是ApplicationQ主要都使用C/C++开发。传l在Linux下开发程序,是在文字模式下,利用vi{文字编辑器撰写C/C++E序存盘后,在Command line下用gcc~译Q若要debugQ则使用gdb?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
      (以下内容加入在案后面)

1 PATH = $PATH: / usr / java / jre1. 5 .0_09 / bin
2 export JAVA_HOME =/ usr / java / jre1. 5 .0_09
3 export CLASSPATH = $JAVA_HOME / lib:.

      (存盘后,重新启动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)



?OO无双 2006-11-11 20:56 发表评论
]]>
如何用C++开发ASP.NET? http://www.shnenglu.com/oomusou/archive/2006/10/22/14002.html?OO无双?OO无双Sun, 22 Oct 2006 04:08:00 GMThttp://www.shnenglu.com/oomusou/archive/2006/10/22/14002.htmlhttp://www.shnenglu.com/oomusou/comments/14002.htmlhttp://www.shnenglu.com/oomusou/archive/2006/10/22/14002.html#Feedback1http://www.shnenglu.com/oomusou/comments/commentRss/14002.htmlhttp://www.shnenglu.com/oomusou/services/trackbacks/14002.htmlASP.NET with Managed C++)Q但Managed C++和C++/CLI的语法不太一P原本的范例无法compile成功Q经q一D늠I之后,l于扑ֈ了用C++/CLI撰写ASP.NET的方式。在q篇文章中,我将一步步的demo如何用C++/CLI开发ASP.NETE序?

 

首先Q徏立一个新的Web SiteQ由于Visual Studio 2005在ASP.NET没支持C++Q所以徏立Web SiteӞ先随侉K一个语a建立?br />


建立一个Web Form名ؓHelloWorld.aspxQ请不要选择Place code in separate fileQ这样Visual Studio 2005会将Event Handler攑֜aspx文g中,可以让aspx.cpp省掉event宣告的程序?br />


使用Web Form Designer做出以下的介面?br />


在Page Directive部分Q将Language=”C#”删除,加上AutoEventWireup="true" Inherits="HelloWorld"QHelloWord为C++的Class名称。也要将<script runat="server"></script>部分删除?br />
 1<%@ Page AutoEventWireup="true" Inherits="HelloWorld" %>
 2
 3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4<html xmlns="http://www.w3.org/1999/xhtml">
 5<head runat="server">
 6  <title>Untitled Page</title>
 7</head>
 8<body>
 9  <form id="form1" runat="server">
10    <div>
11      Using C++/CLI in ASP.NET<br />
12      <br />
13      <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
14      <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div>
15  </form>
16</body>
17</html>
18

建立C++ ProjectQ左侧选择CLRQ此?NET platform的ProjectQ右侧选择CLR Empty Project卛_Q切C要选择Class LibraryQ这样会多出很多我们不需要的案Q而且最后我们也不会用Visual Studio 2005来compileQ会使用Command Prompt的方式compile?br />


建立HelloWorld.aspx.cpp?br />



加入C++/CLIE序。C++/CLI对ANSI C++做了些扩充,Z和C++内徏的型别与Class做区别,Managed的Class需加上ref modifierQ而Managed的Object要加上^。最重要的,IDE支援Intellisense方式写ASP.NET?br />
 1#using <system.dll>
 2#using <mscorlib.dll>
 3#using <system.web.dll>
 4
 5using namespace System;
 6using namespace System::Web::UI::WebControls;
 7
 8public ref class HelloWorld : public System::Web::UI::Page {
 9protected:
10  Button^ Button1;
11  Label^  Label1;
12
13public:
14  void Button1_Click(Object^ sender, EventArgs^ e) {
15    this->Label1->Text = "Hello World";
16    return;
17  }

18}
;

使用Visual Studio 2005 Command PromptR譯C++/CLI?br />
 

使用以下的語法編譯C++/CLI?br />
1cl /clr HelloWorld.aspx.cpp /link /dll /out:HelloWorld.dll


最后只要将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.



?OO无双 2006-10-22 12:08 发表评论
]]>
һþþƷһ| ۺϾƷþ| þùƷһ| þѸƵ| ˬˬƬaþ| 99þù¶Ʒ| ˾þۺ2020| þֻǾƷ66| ҹҹþݺ| þþþAVרJN| Ʒþþþþþapp| 91þ㽶Ů߿| þ91Ʒ91| 99þþƷձһ| ۺѾƷþþ| 鶹þ| þó˹Ʒ| aëƬþ| ɫ͵͵88ŷƷþþ | Ʒ˾þþ| þ޾ƷAVӣ| ҹƷþ| ھƷþۺ88| Ʒһþ| ޾Ʒtvþþþþþþ| ھƷ˾þþӰԺ| þŮվ| þþþ99ƷƬֱ| ˾þĻ| þþƷһ | ëƬŷëƬþþ| ƷȾþav| þþƷ69Ʒ | ޹Ʒþþþ| AVպƷþþþþþ| ٸþþþþñŪ߳| ҹƷþ| 91Ʒպþò| þþŮ붯ȺëƬ| Ļһþ| Ļþþ|