Re: Fruit basket program in C++/CLI

  • From: Jamal Mazrui <empower@xxxxxxxxx>
  • To: programmingblind@xxxxxxxxxxxxx
  • Date: Mon, 19 Nov 2007 11:11:18 -0500 (EST)

The default mode of the Visual C++ compiler (cl.exe) is to create a
native Win32 executable.  The /clr parameter must be used on the command
line if code uses CLI extensions in order to use classes of the .NET
Framework.  In that case, the executable has .NET dependencies.

I think the free Visual C++ 2005 Express Edition can be used for MFC
development.  Unlike the regular version of Visual Studio, however, MFC
libraries are not included in the distribution, so one has to install them
separately as part of the Microsoft Windows Platform SDK.  One then has to
manually add entries for path, library, and include directories within the
Options dialog of the Express iDE, and/or within the command-line
environment if using the stand-alone compiler.

Jamal
On Mon, 19 Nov
2007, Marlon Brandão de Sousa wrote:

> Date: Mon, 19 Nov 2007 12:38:10 -0200
> From: Marlon Brandão de Sousa <splyt.lists@xxxxxxxxx>
> Reply-To: programmingblind@xxxxxxxxxxxxx
> To: programmingblind@xxxxxxxxxxxxx
> Subject: Re: Fruit basket program in C++/CLI
>
> hmm Jamal, correct me if I am wrong, but my understanding is that one
> can't compile binary, native win32 executable if they use the cli
> part.
> Sure visual C can generate binaries for win32, but if you use the
> extensions, at least based on what I have understood, the .net
> dependencies will be kept ...
> In other words I can use visual C to develope binaries in raw c++ but
> not in the cli version, using visual c.
> Marlon
>
> 2007/11/19, Jamal Mazrui <empower@xxxxxxxxx>:
> > Yes, my undrstanding is that C++/CLI is essentially for C++ developers
> > who want to take advantage of the .NET Framework with the language and
> > associated features to which they have become accustomed.  Microsoft
> > submitted the language for international standardization, and this has
> > occurred, so theoretically other software publishers and platforms could
> > develop compilers for C++/CLI besides Microsoft Visual C++.  It is
> > unlikely that will happen practically speaking, however, because of the
> > inherent relation to .NET 2.0.
> >
> > It is noteworthy that Microsoft's compiler can be used to create native
> > Win32 executables in standard C++ without any .NET dependencies.  In
> > other words, the CLI aspect adds language extensions, but not
> > requirements for a traditional C++ developer.
> >
> > Jamal
> > On Mon, 19 Nov 2007, Marlon
> > Brandão de Sousa wrote:
> >
> > > Date: Mon, 19 Nov 2007 09:32:13 -0200
> > > From: Marlon Brandão de Sousa <splyt.lists@xxxxxxxxx>
> > > Reply-To: programmingblind@xxxxxxxxxxxxx
> > > To: programmingblind@xxxxxxxxxxxxx
> > > Subject: Re: Fruit basket program in C++/CLI
> > >
> > > Only to clarify, Lamar, this isn't c or c++. This is c Cli, which
> > > means it is a c++ modified language which allows the use of the .net
> > > stuff. If you want to develope for anything portable or non windows
> > > keep away from this for now and go learn the c++ language.
> > > This version of c++, the cli one, introduces some sintactical
> > > modifications (e.e the ^ symbol which seen to be a kind of pointer),
> > > and some other new things, but it won't compile out of microsoft
> > > compilers and it won't run out of windows ... well it won't run even
> > > on windows , if the .net is not installed on it.
> > >
> > > 2007/11/19, jaffar <jaffar@xxxxxxxxxxxxx>:
> > > > Hi Lamar.  No.  You'll need at least the .net 2.0 runtime to be able to
> > run
> > > > it.  Cheers!
> > > > ----- Original Message -----
> > > > From: "Lamar Upshaw" <lupshaw@xxxxxxxxxxxxxx>
> > > > To: <programmingblind@xxxxxxxxxxxxx>
> > > > Sent: Monday, November 19, 2007 4:30 PM
> > > > Subject: Re: Fruit basket program in C++/CLI
> > > >
> > > >
> > > > > Just to clarify, I should be able to run this using minGW, correct?
> > > > >
> > > > > With All Respect,
> > > > > Upshaw, Lamar T
> > > > > ----- Original Message -----
> > > > > From: "Jamal Mazrui" <empower@xxxxxxxxx>
> > > > > To: <programmingblind@xxxxxxxxxxxxx>
> > > > > Sent: Sunday, November 18, 2007 8:14 PM
> > > > > Subject: Fruit basket program in C++/CLI
> > > > >
> > > > >
> > > > >> From the archive at
> > > > >> http://www.EmpowermentZone.com/cli_fruit.zip
> > > > >>
> > > > >> This fruit basket program is written in C++/CLI:  the C++ language
> > with
> > > > >> extensions to support the Common Language Infrastructure of the .NET
> > > > >> Framework.  C++/CLI can create native Win32 executables or libraries,
> > > > >> .NET-based ones, or a combination of both.  Related development
> > resources
> > > > >> that are freely available from Microsoft.com include the following:
> > the
> > > > >> .NET Framework 2.0 SDK, the Microsoft Platform SDK for Windows Server
> > > > >> 2003, and Visual C++ 2005 Express Edition.
> > > > >>
> > > > >> The archive includes a batch file, compile.bat, which invokes the
> > > > >> command-line compiler to create an executable, cli_fruit.exe, which
> > is
> > > > >> about 5K in size.  The batch file initially sets environmental
> > variables
> > > > >> that may need to be tweaked on another computer so that appropriate
> > > > >> directories are referenced.
> > > > >>
> > > > >> Besides the resulting executable, No other files are needed to run
> > the
> > > > >> program -- as long as .NET 2.0 is installed.   The included Source
> > code
> > > > >> is
> > > > >> also pasted below.
> > > > >>
> > > > >> Jamal
> > > > >>
> > > > >> /*;
> > > > >> content of cli_fruit.cpp;
> > > > >> Fruit Basket program in C++/CLI
> > > > >> //public domain by Jamal Mazrui
> > > > >> */;
> > > > >>
> > > > >> // Reference libraries
> > > > >> #using <System.dll>
> > > > >> #using <System.Windows.Forms.dll>
> > > > >>
> > > > >> // Import namespaces
> > > > >> using namespace System;
> > > > >> using namespace System::Windows::Forms;
> > > > >>
> > > > >> // Define class
> > > > >> ref class FruitBasket : public Form {
> > > > >> public :
> > > > >> //Define constructor
> > > > >> FruitBasket() {
> > > > >> // Initialize controls and set properties
> > > > >> tlp = gcnew TableLayoutPanel();
> > > > >> tlp->ColumnCount = 3;
> > > > >> tlp->RowCount = 2;
> > > > >>
> > > > >> lblFruit = gcnew Label();
> > > > >> lblFruit->Text = "&Fruit:";
> > > > >> tlp->Controls->Add(lblFruit);
> > > > >>
> > > > >> txtFruit = gcnew TextBox();
> > > > >> tlp->Controls->Add(txtFruit);
> > > > >>
> > > > >> btnAdd = gcnew Button();
> > > > >> btnAdd->Text = "&Add";
> > > > >> btnAdd->Click += gcnew EventHandler(this,
> > &FruitBasket::Button_Click);
> > > > >> tlp->Controls->Add(btnAdd);
> > > > >>
> > > > >> lblBasket = gcnew Label();
> > > > >> lblBasket->Text = "&Basket:";
> > > > >> tlp->Controls->Add(lblBasket);
> > > > >>
> > > > >> lstBasket = gcnew ListBox();
> > > > >> tlp->Controls->Add(lstBasket);
> > > > >>
> > > > >> btnDelete = gcnew Button();
> > > > >> btnDelete->Text = "&Delete";
> > > > >> btnDelete->Click += gcnew EventHandler(this,
> > &FruitBasket::Button_Click);
> > > > >> tlp->Controls->Add(btnDelete);
> > > > >>
> > > > >> Text = "Fruit Basket";
> > > > >> AcceptButton = btnAdd;
> > > > >> StartPosition = FormStartPosition::CenterScreen;
> > > > >> AutoSize = true;
> > > > >> AutoSizeMode = System::Windows::Forms::AutoSizeMode::GrowAndShrink;
> > > > >> Controls->Add(tlp);
> > > > >> } // FruitBasket constructor
> > > > >>
> > > > >> // Define destructor
> > > > >> virtual ~FruitBasket() {
> > > > >> } // FruitBasket destructor
> > > > >>
> > > > >> // Define event handler;
> > > > >> void Button_Click(Object^ sender, EventArgs^ e) {
> > > > >> if (sender == btnAdd) {
> > > > >> String^ sFruit = txtFruit->Text->Trim();
> > > > >> if (sFruit->Length == 0) {
> > > > >> MessageBox::Show("No fruit to add!", "Alert");
> > > > >> return;
> > > > >> }
> > > > >>
> > > > >> lstBasket->Items->Add(sFruit);
> > > > >> txtFruit->Clear();
> > > > >> lstBasket->SelectedIndex = lstBasket->Items->Count - 1;
> > > > >> }
> > > > >> else if (sender == btnDelete) {
> > > > >> int iFruit = lstBasket->SelectedIndex;
> > > > >> if (iFruit == -1) {
> > > > >> MessageBox::Show("No fruit to delete->", "Alert");
> > > > >> return;
> > > > >> }
> > > > >>
> > > > >> lstBasket->Items->RemoveAt(iFruit);
> > > > >> if (iFruit == lstBasket->Items->Count) iFruit--;
> > > > >> lstBasket->SelectedIndex = iFruit;
> > > > >> }
> > > > >> } // Button_Click event handler
> > > > >>
> > > > >> // Declare controls;
> > > > >> TableLayoutPanel^ tlp;
> > > > >> Label^ lblFruit;
> > > > >> TextBox^ txtFruit;
> > > > >> Button^ btnAdd;
> > > > >> Label^ lblBasket;
> > > > >> ListBox^ lstBasket;
> > > > >> Button^ btnDelete;
> > > > >> }; // FruitBasket class
> > > > >>
> > > > >> // Define entry point of program
> > > > >> int main() {
> > > > >> Application::Run(gcnew FruitBasket());
> > > > >> return 0;
> > > > >> } // main method
> > > > >>
> > > > >> // End of cli_fruit.cpp
> > > > >>
> > > > >> __________
> > > > >> View the list's information and change your settings at
> > > > >> //www.freelists.org/list/programmingblind
> > > > >>
> > > > >
> > > > > __________
> > > > > View the list's information and change your settings at
> > > > > //www.freelists.org/list/programmingblind
> > > > >
> > > >
> > > > __________
> > > > View the list's information and change your settings at
> > > > //www.freelists.org/list/programmingblind
> > > >
> > > >
> > >
> > >
> > > --
> > > When you say "I wrote a program that crashed Windows," people just
> > > stare at you blankly and say "Hey, I got those with the system, for
> > > free."
> > > Linus Torvalds
> > > __________
> > > View the list's information and change your settings at
> > > //www.freelists.org/list/programmingblind
> > >
> > __________
> > View the list's information and change your settings at
> > //www.freelists.org/list/programmingblind
> >
> >
>
>
> --
> When you say "I wrote a program that crashed Windows," people just
> stare at you blankly and say "Hey, I got those with the system, for
> free."
> Linus Torvalds
> __________
> View the list's information and change your settings at
> //www.freelists.org/list/programmingblind
>
__________
View the list's information and change your settings at
//www.freelists.org/list/programmingblind

Other related posts: