Dariusz Bujak

Dariusz Bujak Student, młodszy
programista JAVA,
C++

Temat: Eclipse C++

Dzięki za pomoc wystarczało usunąć
 ref 
z przed

czyli zmienić

ref class Klient
{
};


na


class Klient
{
};


a tak swoją droga to orientuje sie może ktoś co to jest ten
 ref 
i do czego służy?
Tomasz M.

Tomasz M. never go full
retard!

Temat: Eclipse C++

http://social.msdn.microsoft.com/Forums/en/vcgeneral/t...

W skrócie - z ref klasa zarządzana (czyli korzystja z dobrodzjiestw lub nie, jak kto woli, środowiska .NET), bez standardowa klasa C++.
Sławomir Orłowski

Sławomir Orłowski PhD, physicist,
software
developer/architect
team leader...

Temat: Eclipse C++

Dariusz Bujak:
Dzięki za pomoc wystarczało usunąć
 ref 
z przed

czyli zmienić

ref class Klient
{
};


na


class Klient
{
};


a tak swoją droga to orientuje sie może ktoś co to jest ten
 ref 
i do czego służy?
Cześć,

Słuchaj, napisz może co w ogóle chcesz zrobić a my napiszemy Ci jak to osiągnąć. Z powyższego przykładu widać, że nie orientujesz się, czym się różni standardowy C++ od C++/CLI. Jeśli chcesz pisać aplikacje z GUI wybierz C#. Jeśli masz kawałek kodu niezarządzanego, który chcesz użyć w kodzie zarządzanym to masz dwie opcje: DllImport w C# lub napisanie wrappera w C++/CLI. Oczywiście możesz też napisać to samo, ale w kodzie zarządzanym (przepisać kod). Mixed Mode C++/CLI to moim zdaniem potężne narzędzie w przypadku integracji kodu zarządzanego z niezarządzanym.

ref przed klasą oznacza, że klasa jest typem zarządzanym, co z kolei oznacza, że jej obiekty będą odkładane na zarządzanej stercie. Moment destrukcji obiektu wybierze za Ciebie Garbage Collector. Są to typy obsługiwane przez platformę .NET. Usunięcie ref oznajmia kompilatorowi, że jest to definicja klasy, która jest typem niezarządzanym. Obiekty tego typu będą żyły na stercie niezarządzanej. Sam musisz zadbać o ich zwolnienie. Są to standardowe obiekty z "normalnego" C++. Mixed Mode umożliwia użycie (oraz definiowanie) tych dwóch typów w jednej jednostce kompilacyjnej (jednym pliku, jednej klasie itd). Co więcej, możesz zrobić zarządzany typ, w którym znajdą się niezarządzane pola, lub na odwrót. W jednej metodzie możesz jednocześnie korzystać z obiektów niezarządzanych (tworzonych np. przez wskaźnik * operatorem new) oraz obiektów zarządzanych, tworzonych za pomocą operatora ^ i gcnew. Potęga!

Oto dyskusja na temat wad i zalet C++/CLI:
http://www.goldenline.pl/forum/2512834/c-cli-kto-jeszc...

Jeśli jesteś nowy w świecie .NET proponuję nie pchać się w te rejony. Bardzo szybko się zrazisz. Weź C# i będziesz szczęśliwy.
Grzegorz Kot

Grzegorz Kot Programista .NET

Temat: Eclipse C++

Sławomir Orłowski:
Dariusz Bujak:
Dzięki za pomoc wystarczało usunąć
 ref 
z przed

czyli zmienić

ref class Klient
{
};


na


class Klient
{
};


a tak swoją droga to orientuje sie może ktoś co to jest ten
 ref 
i do czego służy?
Cześć,

Słuchaj, napisz może co w ogóle chcesz zrobić a my napiszemy Ci jak to osiągnąć. Z powyższego przykładu widać, że nie orientujesz się, czym się różni standardowy C++ od C++/CLI. Jeśli chcesz pisać aplikacje z GUI wybierz C#. Jeśli masz kawałek kodu niezarządzanego, który chcesz użyć w kodzie zarządzanym to masz dwie opcje: DllImport w C# lub napisanie wrappera w C++/CLI. Oczywiście możesz też napisać to samo, ale w kodzie zarządzanym (przepisać kod). Mixed Mode C++/CLI to moim zdaniem potężne narzędzie w przypadku integracji kodu zarządzanego z niezarządzanym.

ref przed klasą oznacza, że klasa jest typem zarządzanym, co z kolei oznacza, że jej obiekty będą odkładane na zarządzanej stercie. Moment destrukcji obiektu wybierze za Ciebie Garbage Collector. Są to typy obsługiwane przez platformę .NET. Usunięcie ref oznajmia kompilatorowi, że jest to definicja klasy, która jest typem niezarządzanym. Obiekty tego typu będą żyły na stercie niezarządzanej. Sam musisz zadbać o ich zwolnienie. Są to standardowe obiekty z "normalnego" C++. Mixed Mode umożliwia użycie (oraz definiowanie) tych dwóch typów w jednej jednostce kompilacyjnej (jednym pliku, jednej klasie itd). Co więcej, możesz zrobić zarządzany typ, w którym znajdą się niezarządzane pola, lub na odwrót. W jednej metodzie możesz jednocześnie korzystać z obiektów niezarządzanych (tworzonych np. przez wskaźnik * operatorem new) oraz obiektów zarządzanych, tworzonych za pomocą operatora ^ i gcnew. Potęga!

Oto dyskusja na temat wad i zalet C++/CLI:
http://www.goldenline.pl/forum/2512834/c-cli-kto-jeszc...

Jeśli jesteś nowy w świecie .NET proponuję nie pchać się w te rejony. Bardzo szybko się zrazisz. Weź C# i będziesz szczęśliwy.

Potwierdzam co do kierunku C# w tym o wiele więcej przynajmniej z mojej strony mogę pomóc bo w tym języku pracuję. Poza tym tak jak Sławomir stwierdził, jest to o wiele przyjaźniejsze środowisko dla tworzenia aplikacji okienkowych.
I tak jak słusznie przypomniał C++ nie posiadał GC za to C++/CLI już dzięki .NET nam to załatwia.
Dariusz Bujak

Dariusz Bujak Student, młodszy
programista JAVA,
C++

Temat: Eclipse C++

Witam dziekuje za pomoc. Pisałem już w c# i faktycznie było przyjemnie ale teraz w nowej pracy bede sie posługiwał c++wiec w tym języku muszę przygotować aplikacje. Narazie dzięki wielkie za pomoc pewnie bede jeszcze miał do Was jakies pytania ale to może potem.
Pozdrawiam serdecznie.
Dariusz Bujak

Dariusz Bujak Student, młodszy
programista JAVA,
C++

Temat: Eclipse C++

Witam jak narazie doś mi nawet szło i doszedłem do momentu w którym chce zacząć sie komunikować z bazą postgreSQL. Znalazłem sobie na necie temat o tym jak to zrobić http://www.askyb.com/cpp/c-postgresql-example/
i postępowałem zgodnie z tym jak tam jest napisane ale oczywiście coś jest nie tak i wyrzuca mi błędy
Error	1	error LNK2031: unable to generate p/invoke for "extern "C" void __clrcall PQfinish(struct pg_conn *)" (?PQfinish@@$$J0YMXPAUpg_conn@@@Z); calling convention missing in metadata	ConnectDB.obj
co ciekawe w tym linku który dodałem innym ludzia też takie błędy wyskakiwały ale ja mam tak skonfigurowane jak jest tam podane i mimo to nie trybi. Może ktoś mi napisać w czym może być błąd? Dodam tylko że w tym [Linker -> Input -> Additional Dependencies]
libpq.lib

ja wpisywałem recznie do tego pola, ale jak otworzyłem przyciskiem to nie miałem tej biblioteki tam pokazanej ale w katalogu lib taki plik istnieje.
Sławomir Orłowski

Sławomir Orłowski PhD, physicist,
software
developer/architect
team leader...

Temat: Eclipse C++

Dariusz Bujak:
Witam jak narazie doś mi nawet szło i doszedłem do momentu w którym chce zacząć sie komunikować z bazą postgreSQL. Znalazłem sobie na necie temat o tym jak to zrobić http://www.askyb.com/cpp/c-postgresql-example/
i postępowałem zgodnie z tym jak tam jest napisane ale oczywiście coś jest nie tak i wyrzuca mi błędy
Error	1	error LNK2031: unable to generate p/invoke for "extern "C" void __clrcall PQfinish(struct pg_conn *)" (?PQfinish@@$$J0YMXPAUpg_conn@@@Z); calling convention missing in metadata	ConnectDB.obj
co ciekawe w tym linku który dodałem innym ludzia też takie błędy wyskakiwały ale ja mam tak skonfigurowane jak jest tam podane i mimo to nie trybi. Może ktoś mi napisać w czym może być błąd? Dodam tylko że w tym [Linker -> Input -> Additional Dependencies]
libpq.lib

ja wpisywałem recznie do tego pola, ale jak otworzyłem przyciskiem to nie miałem tej biblioteki tam pokazanej ale w katalogu lib taki plik istnieje.
Tak na szybko, jeśli używasz natywnej funkcji przez DllImport, to przełącz callingconvention na Cdecl:

[DllImport("jakaśtam.dll", CallingConvention=CallingConvention.Cdecl)]
public static extern int cośtam();
Dariusz Bujak

Dariusz Bujak Student, młodszy
programista JAVA,
C++

Temat: Eclipse C++

Witam dzięki za odpowiedz, ale czy mógłbyś to napisać po kolei co gdzie to skonfigurować?
Sławomir Orłowski

Sławomir Orłowski PhD, physicist,
software
developer/architect
team leader...

Temat: Eclipse C++

Dariusz Bujak:
Witam dzięki za odpowiedz, ale czy mógłbyś to napisać po kolei co gdzie to skonfigurować?
Musiałbym zobaczyć Twój kod. Na początek, googlowałeś może ten błąd:
http://msdn.microsoft.com/en-us/library/ms173734%28v=v...
Sprawdź podpowiedź w MSDN, jak nie pomoże do dalej zobaczymy.
Dariusz Bujak

Dariusz Bujak Student, młodszy
programista JAVA,
C++

Temat: Eclipse C++

Ok dzieki za pomoc poradziłem sobie z tym.

Tak dla potomności może ktoś bedzie miał problem z łączeniem do bazy:

http://www.dirkbertels.net/computing/postgres.php

pięknie, ładnie wszystko opisane.

Pozdrawiam.

A tak może przy okazji, jest taka możliwość w Visual Studio 2008 że moge sobie wrzucać jakiś tekst na konsole w projekcie w którym tworze komponenty w API.

Coś takiego podobno jak w JAVIE, System.out.println("teks");

Dzięki temu mógłbym sobie w niektórych sytłacjach sprawdzać program bez Dbugowania.Dariusz Bujak edytował(a) ten post dnia 10.05.12 o godzinie 09:50
Tomasz M.

Tomasz M. never go full
retard!

Temat: Eclipse C++

Dariusz Bujak:
A tak może przy okazji, jest taka możliwość w Visual Studio 2008 że moge sobie wrzucać jakiś tekst na konsole w projekcie w którym tworze komponenty w API.

Pierwsze z brzegu linki... generalnie spod Trace'a możesz rzucać na Output w VS.

http://stackoverflow.com/questions/1767595/vs2008-wont...
http://stackoverflow.com/questions/2418241/visual-stud...
http://support.microsoft.com/kb/815788
Dariusz Bujak

Dariusz Bujak Student, młodszy
programista JAVA,
C++

Temat: Eclipse C++

Dzięki

Śmiga :)

Pozdrawiam
Sławomir Orłowski

Sławomir Orłowski PhD, physicist,
software
developer/architect
team leader...

Temat: Eclipse C++

Dariusz Bujak:
Ok dzieki za pomoc poradziłem sobie z tym.

Tak dla potomności może ktoś bedzie miał problem z łączeniem do bazy:

http://www.dirkbertels.net/computing/postgres.php

pięknie, ładnie wszystko opisane.

Pozdrawiam.

A tak może przy okazji, jest taka możliwość w Visual Studio 2008 że moge sobie wrzucać jakiś tekst na konsole w projekcie w którym tworze komponenty w API.

Coś takiego podobno jak w JAVIE, System.out.println("teks");

Dzięki temu mógłbym sobie w niektórych sytłacjach sprawdzać program bez Dbugowania.
Hej,
Weź sobie jeszcze NLOGa i w ogóle będziesz szczęśliwy:
http://nlog-project.org/
Dariusz Bujak

Dariusz Bujak Student, młodszy
programista JAVA,
C++

Temat: Eclipse C++

Witam

W sumie temat wątku jest inny ale skoro jesteście tacy mili i mi w nim pomagacie:) to mam jedno pytanko stworzyłem sobie klase która dziedziczy po CheckBox i teraz mam pytanie jak dodać zdarzenie w tej klasie CheckedChanged tak aby wykonywało sie we wszystkich kontrolkach utworzonych z te klasy.

A także mam pytanie czy da sie tak dodać to zdarzenie aby można było później jeszcze dodawać zdarzenia dla każdego nowego obiektu żeby wykonywał czynność dla wszystkich i jeszcze swoją unikalną.

Taki przykład

w klasie
public ref class CHBTest : public System::Windows::Forms::CheckBox


jest zdarzenie która ma wykonać każdy nowy obiekt po CheckedChanged
ma zmieć tekst, jak jest zaznaczony tekst ma być "Tak" jak nie jest zaznaczony tekst ma byc na "Nie" i to ma wykonywać każdy obiekt tej klasy.

Natomiast dodatkowo jak by sie udało po utworzeniu obiektu CHBTest ^check1 = gcnew CHBTest(); dodam mu do zdarzenia CheckedChanged polecenia aby zieniał także kolor i po mianie CheckedChanged bedzie zmieniał tekst (jak wszystkie obiekty tej klasy) oraz dodatkowo zmieał kolor.

Pozdrawiam.

Następna dyskusja:

Nowy plugin do Eclipse




Wyślij zaproszenie do