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
Ondra Toman
Člen
Avatar
Ondra Toman:29.7.2020 13:02

Na internetu jsem našel projekt napsaný v c++ (kód má asi 3500 řádků), ale potřeboval bych ho využít v c# aplikaci. Takže bych potřeboval vytvořit dll knihovnu. Problém je v tom, že moje znalosti c++ jsou na úrovni hello world. Jak pracné je vytvořit dll knihovnu projektu o této velikosti? Případně, pokud by to bylo jen pár řádků kódu... byl by někdo zkušenější ochotný to udělat?

 
Odpovědět
29.7.2020 13:02
Avatar
JerryM
Člen
Avatar
JerryM:31.7.2020 10:49

Knihovna z nativeC++ do C# se dělá v MS VS 2019 C++/CLI a říká se tomu vytvořit řízený wrapper v systému CLI (Common Language Interface). Musel by ses naučit C++/CLI což není zrovna jednoduchá záležitost a trvá to dlouho. Další možností je odkazovat se na funkce knihovny v C++ přímo přes tzv. DLL import.

https://stackoverflow.com/…limport-in-c

nebo

http://www.functionx.com/…llimport.htm

a programovat v C# v režimu neřízeného kodu. Což tvuj algoritmus výrazně zpomalí.
Ale fungovat to bude.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
31.7.2020 10:49
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Ondra Toman
Martin Dráb:31.7.2020 11:18

C++/CLI nedoporučuji, pokud nepotřebuješ volání do C++ od C# nějak výrazně odstínit (např. zpracovávat parametry a tak). Což si myslím, že nechceš.

Pokud sem hodíš projekt, který bys potřeboval převést na DLL knihovnu, můžu se na to podívat. Jak bylo řečeno výše, funkce budeš importovat přímo do C#. Co vím, jejich volání by při Release překladu nemělo být výrazně penalizováno (ač je samozřejmě lepší provádět část náročnou na výkon čistě v C++, pokud taková existuje).

Nahoru Odpovědět
31.7.2020 11:18
2 + 2 = 5 for extremely large values of 2
Avatar
Ondra Toman
Člen
Avatar
Odpovídá na JerryM
Ondra Toman:31.7.2020 19:26

Už jsem našel alternativu pro c#. Kažopádně díky za přiblížení problematiky určitě se mi to jednou bude hodit.

 
Nahoru Odpovědět
31.7.2020 19:26
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 4 zpráv z 4.