Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Tomáš Vitek:29.12.2017 11:32

Ahoj,
programuji simulátor pohybu těles ve vesmíru. Rád bych ho udělal tak, že grafickou část (formy, zadávání vlastností těles, výsledná animace, ...) udělám v C#, ale samotné "výpočetní jádro" bych rád udělal v něčem trochu rychlejším, jako je C++. Existuje nějaký způsob, jak např. napsat knihovnu v C++ a pak ji používat v C# nebo napsat 2 programy které by spolu navzájem komunikovaly?

 
Odpovědět
29.12.2017 11:32
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na Tomáš Vitek
ostrozan:29.12.2017 12:38

Ano můžeš si napsat knihovnu v C/C++ a pak ji importovat do C# projektu - má to ovšem svá pravidla.

A když C#, tak určitě WPF - už kvůli té animaci

 
Nahoru Odpovědět
29.12.2017 12:38
Avatar
VitekST
Člen
Avatar
Odpovídá na Tomáš Vitek
VitekST:30.12.2017 21:08

S knihovnou to jde vícero způsoby:

  • P/Invoke ze C#: V knihovně vyexportuješ funkce, v C# vytvoříš novou třídu, do které přeložíš hlavičky funkcí a přidáš atribut DllImport. Nutno ale říci, že tento proces může být dosti pracný, protože kromě funkcí samotných budeš muset přeložit i datové struktury, pokud nějaké používáš a to ani nemluvě o maršálování datových typů. Dále takto nemůžeš exportovat třídu, skutečně, jen funkce.
  • P/Invoke z C++/CLI: C++/CLI je v podstatě C++ ale s .NET Frameworkem pod kapotou, tedy výstupem je normální .NET sestavení a zase na druhou stranu je zde možné používat C++ kód, včetně hlavičkových souborů. Přiložíš hlavičkové soubory, přiložíš knihovnu a deklarované typy "přeexportuješ" (klíčovým slovem typedef, možná?).
 
Nahoru Odpovědět
30.12.2017 21:08
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Tomáš Vitek
Petr Čech:31.12.2017 9:15

Opravdu potřebuješ až tak něco výkonného? On C# není zrovna pomalý, pokud budeš optimalizovat, budou se ty dvě věci lišit jen minimálně. Navíc pokud bys algoritmy optimalizoval do takové úrovně, kde c++ skutečně bude znatelně rychlejší, bude to hodně náchylné k chybám.

Nahoru Odpovědět
31.12.2017 9:15
the cake is a lie
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na Tomáš Vitek
ostrozan:31.12.2017 12:39

Taky si myslím, že importovat C/C++ knihovny má smysl v případě že už jsou hotové - v případě, že se je chystáš teprve psát v tom taky nevidím nějaký přínos

 
Nahoru Odpovědět
31.12.2017 12:39
Avatar
Odpovídá na ostrozan
Tomáš Vitek:2.1.2018 17:32

Ahoj, díky za všechny odpovědi.
Knihovny pro výpočet ještě napsané nemám, takže to nejspíš nakonec celé napíšu v C#.
Jinak, určitě je to o tolik lepší dělat ve WPF? Animaci stejně plánuji udělat v něčem jako OpenTK nebo DirectX, a WF jsou mi poněkud sympatičtější...

 
Nahoru Odpovědět
2.1.2018 17:32
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na Tomáš Vitek
ostrozan:2.1.2018 20:24

O výhodách WPF toho bylo napsáno spousta - to si vygoogli sám.
Příklad toho, co by tě mohlo zajímat je třeba tady

Ale samozřejmě tě nikdo nenutí jezdit Mercedesem, když je ti sympatický Trabant :)

 
Nahoru Odpovědět
2.1.2018 20:24
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.