Slevový týden - Srpen
30 % bodů zdarma na online výuku díky naší Slevové akci!
Pouze tento týden sleva až 80 % na e-learning týkající se Javy.
Avatar
Ondra Toman
Člen
Avatar
Ondra Toman:29. júla 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?

 
Odpovedať
29. júla 13:02
Avatar
JerryM
Člen
Avatar
JerryM:31. júla 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é riešenie
+20 Skúseností
+1 bodov
Riešenie problému
 
Hore Odpovedať
31. júla 10:49
Tento výukový obsah pomáhajú rozvíjať nasledujúce firmy, ktoré možno hľadajú práve teba!
Avatar
Martin Dráb
Redaktor
Avatar
Odpovedá na Ondra Toman
Martin Dráb:31. júla 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).

Hore Odpovedať
31. júla 11:18
2 + 2 = 5 for extremely large values of 2
Avatar
Ondra Toman
Člen
Avatar
Odpovedá na JerryM
Ondra Toman:31. júla 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.

 
Hore Odpovedať
31. júla 19:26
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 4 správy z 4.