|
I still recommend reading those links to understand what's going on.
The simplest syntax is using gcroot, which hides some messier code used
when using GCHandle directly...
#include <vcclr.h>
gcroot<Form1 ^> MyWindowsForm;
...
MyWindowsForm = gcnew Form1();
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
I got it. Thanks, Mark.
Manny
|
|
|
|
|
Can anyone suggest a good book for C++/CLI??
I dont find much books in the market though...
Strange!!
And I heard somewhere that CLI is the most powerful language!!
I need a book with imtermediate skills..
Although I am a beginner, still I think I can learn those basics from internet..
So any help to get a good intermidiate C++/CLI book will be highly appreciated..
Thanks!!
|
|
|
|
|
wrote: CLI is the most powerful language!!
CLI means Common Language Interface. It is not an actual programming language, but rather a set of classes that make up the .NET Framework.
"I guess it's what separates the professionals from the drag and drop, girly wirly, namby pamby, wishy washy, can't code for crap types." - Pete O'Hanlon
|
|
|
|
|
Nishant Sivukumar has an excellent book on the topic, it's published by Manning.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
Christian Graus wrote: Nishant Sivukumar has an excellent book on the topic, it's published by Manning.
I've seen Nishant's book..
Its really excellent, but it is not for intermediate developers..
It teaches interop capabilities and WPF,WCF which I think is relevant for advanced developers..
Anyways, thanks for your help..
If anybody else knows an intermediate level book please let me know..
Thanks again..
|
|
|
|
|
|
I have searched for last 2 months the C++/CLI programming book in few public university but what I can find are books on native c++ maybe mixed with part of the C++/CLI and C#. If want to use .NET Framework it is better look for C# as reference.
|
|
|
|
|
Q1:
enum class Instrution{sit, sleep, jog, nullptr};
ref class DataPack{
public: Instruction^ xxx;
DataPack(array<Byte>^ data){
this->xxx = safe_cast<instruction^>(BitConvert::ToInt32(data, 0));
}
};
I create an object of the ref class DataPack in ref class Form1:
array<Byte>^ byData = gcnew array<Byte>(1024);
DataPack^ DataRecv = gcnew DataPack(byData);
switch(DataRecv->xxx) {}
2 error occur:
(1)error C2682: cannot use 'safe_cast' to convert from 'int' to 'DataPack::Instruction ^' (happen in ref class DataPack)
(2)error: illegal type of switch statement.(happen in ref class Form1)
I think main cause is due to the error(1). Whats wrong with my casting? Reference to c# this.xxx = (Instruction)BitConvert::ToInt32(data, 0); work properly.
Q2:
List<Byte>^ result = gcnew List<Byte>();
result->AddRange(BitConverter::GetBytes((int)xxx));
error C2664:'System::Collections::Generic::List<t>::AddRange': cannot convert parameter 1 from 'cli::array <type>^' to 'System::Collections::Generic::IEnumerable<t>^'
What is about 'IEnumerable<t>? Any example for understanding? The above usage of list::AddRange is reference to the c# but not work that way in c++/cli.
Thanks..
modified on Tuesday, March 18, 2008 4:43 AM
<div class="ForumMod">modified on Tuesday, March 18, 2008 4:46 AM</div>
|
|
|
|
|
It's really difficult to decipher your post, but I'll take a crack at Q1.
The error messages pretty much explain the errors. You can't convert an Int32 to an enum^.
You also can't switch on an enum^.
You can't use the nullptr keyword in the enumeration.
Use your enumeration like an enumeration - you don't create handles to them on the GC heap.
Maybe this is what you wanted:
enum class Instruction {sit, sleep, jog};
ref class DataPack
{
public:
Instruction xxx;
DataPack(array<Byte>^ data)
{
this->xxx = safe_cast<Instruction>(BitConverter::ToInt32(data, 0));
}
};
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Err...what you mean by decipher my post? Is that about my question expression hard to understand or something else? Anyway, I am sorry. Just tell me what should I do to improve. Thank you.
|
|
|
|
|
Unknown types/classes, case sensitivity, etc. I re-read it many times and deduced the types as well as I could, mostly
based on the error messages.
Actual pasted code is much easier to work with than pseudocode, but that's just me.
Unless maybe that wasn't C++?
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Is there any method in BCL which eliminates the Duplicate items from a listbox?
I am using C++/CLI in Visual Studio 2008..
Or do I have to specifically write a method for it??
|
|
|
|
|
Don't cross post, it is rude. Your question has been already answered in C# forum.
Giorgi Dalakishvili
#region signature
my articles
#endregion
|
|
|
|
|
|
Hi,
I am creating a treeview,like Solution Explorer. I done the linking of current file. Now what i want is, it will check the function syntax based on that it will generate the treenode automatically . can you give me some sample code.
|
|
|
|
|
Hi All,
The only thing I can say is I am missing something... Can anyone bail me out.
Thanks,
Jeff
array<Byte>^ key = { ... };
array<Byte>^ encrypted = { ... };
...
pin_ptr<Byte> pk = const_cast< interior_ptr<Byte> >(key);
pin_ptr<Byte> pe = const_cast< interior_ptr<Byte> >(encrypted);
bool result = Decrypt( pk, key->Length, pe, encrypted->Length );
|
|
|
|
|
Found it...
Jeffrey Walton wrote: const_cast< interior_ptr<byte> >(key);
const_cast< interior_ptr<Byte> >(&key[0]);
Jeff
|
|
|
|
|
Out of curiosity, why the const_cast?
What about
pin_ptr<Byte> pk = &key[0];
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Hi Mike,
Thanks. That works too.
I don't have any CLI books, so I was working off of Nishant's online book (chapter 4 if I recall). I believe I was incorrectly adapting pinning string buffers.
Can you recommend any good CLI books? I wrote to Richter asking him for something similar to CLR via C#. He was working on a book Stan Lippman to "port" his CLR via C# to C++/CLI, but it didn't work out.
Jeff
|
|
|
|
|
Jeffrey Walton wrote: Hi Mike
Please, call me Mark hehe
Nish's book is the only one I know of (and I don't have it unfortunately).
The only managed C++ book I have on my shelf is
"Programming with Managed Extensions for Microsoft Visual C++ .NET"
by Richard Grimes.
It's occasionally a good reference, but now that I don't use managed extensions
(VS 2003 .NET) I don't use it much anymore
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Hi Mark,
Mark Salsbery wrote: Please, call me Mark hehe
Don't I fell like the horse's ass...
Mark Salsbery wrote: Nish's book is the only one I know of (and I don't have it unfortunately).
I will pick it up shortly. At minimum, it will be support for a valuable CodeProject member.
I'll write to Richter again to try an nudge him along. I'm not above begging
Jeff
|
|
|
|
|
1st I dont have any idea if my question fits into this catagory or not? f not then really sorry friends. however my question is "Can i reuse a C/C++ code into any .Net application using C#?"
(Jameel)
|
|
|
|
|
If it is written in managed c++ then it can be used from any .NET language.
|
|
|
|
|
To use the code with the least amount of modification, you can use C++/CLI (managed C++) to
bridge the gap between the native code and the managed .NET world.
A .NET assembly from C++/CLI will be usable from C# assemblies.
There is a learning curve, its size depending on how much you know about .NET
A first look at C++/CLI[^]
This message board is a good place to get help if you choose to go that route
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|