abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 18:33 | Nová verze Ladislav Hagara | Komentářů: 0
    dnes 12:55 | Zajímavý projekt

    TamaGo je open source framework pro programování ARM a RISC-V systémů na čipu (SoC) v programovacím jazyce Go. Prezentace projektu z OSFC (Open Source Firmware Conference) v pdf na GitHubu.

    Ladislav Hagara | Komentářů: 0
    včera 21:44 | Komunita

    Konference OpenAlt 2024 – jedinečné fórum, kde se každoročně sdružují lidé se zájmem o vývoj a využití svobodného a otevřeného softwaru a hardwaru, tvorbu, zpracování a zpřístupňování otevřených dat, svobodný přístup k informacím a vzdělávání – hledá přednášející, dobrovolníky a partnery. Konference proběhne 2. a 3. listopadu v prostorách FIT VUT v Brně. Vstup je zdarma.

    Ladislav Hagara | Komentářů: 0
    včera 19:44 | Nová verze

    Po 9 týdnech vývoje od vydání Linuxu 6.10 oznámil Linus Torvalds vydání Linuxu 6.11. Z Vídně, jelikož tam zítra začíná Open Source Summit Europe. Přehled novinek a vylepšení na LWN.net: první a druhá polovina začleňovacího okna. Později také na Linux Kernel Newbies.

    Ladislav Hagara | Komentářů: 0
    včera 12:00 | Zajímavý software

    Grocy je open source ERP systém. Ne však pro plánování zdrojů v podnicích ale v domácnostech. Spravovat lze zásoby, povinnosti a úkoly. Vytvářet nákupní seznamy. Ověřovat dostupnost surovin pro recepty. Plánovat jídelníčky. Vyzkoušet lze online demo. Vývoj probíhá na GitHubu.

    Ladislav Hagara | Komentářů: 6
    14.9. 19:44 | Komunita

    Na čem aktuálně pracují vývojáři GNOME a KDE? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE.

    Ladislav Hagara | Komentářů: 0
    13.9. 23:11 | IT novinky

    3D tiskárny Original Prusa MK4S (a MK4) v kombinaci s Prusamenty PLA a PETG mají mezinárodně uznávanou certifikaci UL 2904 GREENGUARD, která potvrzuje splnění přísných bezpečnostních standardů pro VOC a UFP.

    Ladislav Hagara | Komentářů: 2
    13.9. 22:11 | Nová verze

    Byla vydána verze R1/beta5 open source operačního systému Haiku (Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 7
    13.9. 16:33 | Komunita

    Sovereign Tech Fund (Wikipedie), tj. program financování otevřeného softwaru německým ministerstvem hospodářství a ochrany klimatu, podpoří Sambu částkou 688 800 eur.

    Ladislav Hagara | Komentářů: 50
    13.9. 13:11 | IT novinky

    Společnost OpenAI představila novou řadu svých AI modelů OpenAI o1 navržených tak, aby "strávily více času přemýšlením, než zareagují". Videoukázky na 𝕏 nebo YouTube.

    Ladislav Hagara | Komentářů: 6
    Rozcestník

    Dotaz: Použití C++ DLL knohovny v C#

    28.8.2011 19:00 BlackyJack | skóre: 1
    Použití C++ DLL knohovny v C#
    Přečteno: 928×
    Nazdar,

    mám DLL kníhovnu psanou (nejspíš) v C++, potřebuji ji v C# aplikaci pro navázání komunikace, což mi má ta DLL zprostředkovat. Jsem schopný zavolat jednoduché funkce, avšak klíčová funkce má vracet stream (v C++ je to čteno přes fileread a filewrite - či tak nějak), avšak netuším, jak se s tím vyrovnat v c#.

    Nemáte někdo zkušenost s podobným problémem? Popř. nemůžete mi dát kontakt na někoho, kdo se s tím občas setkává? Nenechal bych dotyčného škodným.

    Díky

    Odpovědi

    28.8.2011 19:55 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Použití C++ DLL knohovny v C#
    Nemáte na mysli funkce fread a fwrite ze stdio.h? V C# je lze zadeklarovat takto:
    [DllImport("msvcrt.dll", SetLastError=true)]
    static extern IntPtr fread(byte[] buffer, IntPtr size, IntPtr count, IntPtr stream);
    
    [DllImport("msvcrt.dll", SetLastError=true)]
    static extern IntPtr fwrite(byte[] buffer, IntPtr size, IntPtr count, IntPtr stream);
    
    28.8.2011 20:59 BlackyJack | skóre: 1
    Rozbalit Rozbalit vše Re: Použití C++ DLL knohovny v C#
    A pokud by mi nějaké funkce volaná v DLL měla vracet stream, jak se s tím vypořádat?
    28.8.2011 22:03 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Použití C++ DLL knohovny v C#
    To záleží na tom, co je ten stream vlastně zač. Pokud je to ukazatel nebo má velikost ukazatele, lze návratový typ deklarovat jako IntPtr.
    28.8.2011 21:14 BlackyJack | skóre: 1
    Rozbalit Rozbalit vše Re: Použití C++ DLL knohovny v C#
    Abych to upřesnil, tak vím, že v DLL je funkce OpenXmlBridge, která vrací handle, se kterým se má pracovat přes funkce ReadFile/WriteFile, resp. ReadFileEx/WriteFileEx (jde o asynchronní komunikaci).

    Z C# jsem si schopen zavolat funkci OpenXmlBridge, avšak samotným zavoláním se program logicky zastaví...
    28.8.2011 22:07 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Použití C++ DLL knohovny v C#
    Z C# jsem si schopen zavolat funkci OpenXmlBridge, avšak samotným zavoláním se program logicky zastaví...
    Tomu nerozumím, když s tím pracujete asynchronně.

    Mj. deklarace pro funkce ReadFileEx a WriteFileEx lze najít na serveru pinvoke.net (jsou v knihovně kernel32.dll).
    28.8.2011 22:26 BlackyJack | skóre: 1
    Rozbalit Rozbalit vše Re: Použití C++ DLL knohovny v C#
    Chápu to tak, že program mi vrátí handle?, který můžu použivat pro zápis/čtení zpráva - jaká si pipe, jenže nevím, jak si to, co mi nějakým mechanismem nabízí obsloužit.

    Zkouším se teď vydávám směrem, kdy jsem si nechal vrátit IntPtr a ten si zkouším obsloužit, avšak netuším, zda se vůbec vydávám správným směrem.

    Mj, ReadFileEx/WriteFileEx pracují s IntPtr, že?
    29.8.2011 01:45 BlackyJack | skóre: 1
    Rozbalit Rozbalit vše Re: Použití C++ DLL knohovny v C#
    Tak něco mi to vrací přes funkci:
    [DllImport("Moje.dll", SetLastError = true)]
    private static extern SafeFileHandle OpenXMLBridge();
    
    //Pak se s tím dá pracovat přes
    
    SafeFileHandle handler = OpenXMLBridge();
    FileStream fs = new FileStream(handler, FileAccess.ReadWrite, 4096, true);
    
    
    
    Průšvih je, že mi to padá při druhém čtení či zápisu, při fs.Close() mi to padá. Ale... to snad již nějak dořeším.
    29.8.2011 08:29 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Použití C++ DLL knohovny v C#
    Není OpenXMLBridge funkce z té DLL knihovny v C a nevrací klasický windowsovský handle? Pokud ano, tak byste tam měl mít IntPtr:
    [DllImport("Moje.dll", SetLastError = true)]
    private static extern IntPtr OpenXMLBridge();
    
    a pracovalo by se s tím takto:
    var handle = new SafeFileHandle(OpenXMLBridge(), true);
    var fs = new FileStream(handle, FileAccess.ReadWrite, 4096, true);
    

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.