[ yooyo @ 28.06.2005. 23:00 ] @
Poceo sam da radim jedan program i odlucio sam da pokusam da ga napisem koristeci Managed C++. Obzirom na to da ima gomila ogranicenja odlucio sam da mesam managed i unmanaged deo programa (u pitanju je OpenGL 3D graficka aplikacija). Problema ima mnogo i usput ih resavam.

Interesuje me vase misljenje i iskustva o mc++? Zbog cega vam se svidja ili ne? Na koje probleme ste nailazili?

yooyo
[ Dragi Tata @ 29.06.2005. 01:35 ] @
Pazi dobro. U VS2005, C++ za .NET platformu je potpuno izmenjen. Doduše, treba da izbace i neki alat koji će staru sintaksu da prevodi u novu, ali nisam video kako to izgleda u praksi.

Inače, novi MC++ se zvanično zove C++/CLI i mislim da je jako dobro zamišljen, mada nešto kasne sa implementacijom i bojim se malo bagova. Pogledaj:

http://www.codeproject.com/managedcpp/cppcliintro01.asp
[ X Files @ 29.06.2005. 14:42 ] @
Managed stil, kao i ceo .NET princip je slikovito rečeno "defragmentacija"
stilova, načina i standarda u sadašnjem načinu programiranja.

Po rečima nekih mojih kolega koji već koriste .NET, on i dalje značajno
kaska u performansama za Win32 programima, ali pitanje je dana kada
će se stvari promeniti.

Meni se .NET svidja, ali ga i dalje ne koristim u praktične svrhe...
[ MikeLDN @ 29.06.2005. 23:38 ] @
Jos uvek nema dobru kompatibilnost za STL i template uopste (mada se S. Lipman hvali kako to sad sljaka)...

Sve bi trebalo da funkcionise jednostavno sa ukljucivanjem npr:
#include <cliext/vector>
ali "unutra" je:
//
// GENERIC CLASS vector_generic
//
generic<typename _Value_t>
ref class vector_generic
: public vector_generic_base<_Value_t>,
Generic::ICollection<_Value_t> ....

To interno prevodjenje template->generic rezultuje time da ne rade ni Boost ni Loki. Ovakva je situacija u VS2005 Beta2. Mozda do finalne verzije sve bude OK.
Dosta lutaju, obrati paznji da se Beta1 i Beta2 jako razlikuju (nema vise __gc gluposti).

Pozdrav
[ yooyo @ 30.06.2005. 00:21 ] @
Imam Beta2 ali ne zelim da ga koristim jer aplikacija koju radim treba da bude pouzdana i da radi. Za sada koristim mc++ iz .NET 2003 paketa. U pitanju je mesavina managed i unmanaged c++.

Uglavnom, unamanaged c++ je u dll-u koji se dinamicki ucitava i pomocu par exportovanih funkcija dobija interface (pure virtual klasa) raznih objekata u dll-u.
Managed deo se koristi za user interface. Za sada razvoj ide OK, osim nekih nebuloznih problema na koje sam naleteo:

1. Kako da elegantno prebacim String iz openFileDialog->FileName u const char* (tj. unicode filename u ASCII). Koristio sam Marshal.StringToCoTaskMemAnsi metodu uz pratecu FreeCoTaskMem, ali to izgleda jako ruzno.

2. Sledece parce code-a pravi probleme...
Code:

private: GLUquadric* sfera;
...
...
obj = gluNewQuadric();


Prevodi se bez problema ali puca u runtime-u sa greskom da ne moze da nadje typelib GLUquadric!? Da bih resio problem morao sam da napisem wrapper oko GLUquadric. Ima li neko normalnije resenje? Pokusao sam i GLUquadric __nogc* sfera; i isto se desava.

3. Razna cudna ponasanja IDE-a me zivciraju. Ako imam neku moju komponentu u Toolboxu onda posle dorade te komponenete (npr. dodavanje novih public metoda) moram restartovati IDE da bi to proradilo.

4. Vreme prelaska iz design view u code view traje sve duze i duze (10-15 sec). Imam P4 na 3.2Ghz i 1GB RAM memorije. Jedan moj prijatelj se zalio da je u njegovom projektu ovaj prelazak trajao po sat ipo (da.. da.. 90min). Kada se iznervirao, razbio je formu na vise delova i smanjio prelazak na "samo" 30 min. Samo se plasim da ne dodjem u slicnu situaciju.

yooyo
[ Dragi Tata @ 30.06.2005. 13:27 ] @
Ja sam dosta koristio MC++, ali ne za taj scenario koji ti pominješ (native logika i managed UI), već za ono zašta je MC++ i namenjen - .NET interfejsi C++ biblioteka.

Zašto ne batališ managed UI i koristiš MFC, WTL ili neku drugu native UI biblioteku?

Inače, imaš vrlo korisne trikove sa MC++om (uključujući i konverziju stringova) ovde:

http://msdn.microsoft.com/msdn...es/02/02/managedc/default.aspx