<html><body>Základní problém je, že už je hotový kód psaný v C++.<br>Druhá část problému je, že ve Windows umím lépe ve VB, takže bych radši testovadlo ve VB.<br>... Teď už radši dělám testovadlo v C++, abych se už dál nezdržoval pokusama.<br><br>Zda míchám, nebo ne, asi nejlépe posoudit podle těch dvou ukázek, co nešly zkombinovat.<br><br>PH<br><br><p><br></p><p>Od: Petr Weissar <weissar@kae.zcu.cz><br></p><blockquote>nemícháte náhodou managed kód ve VB s klasickou DLL v C++ ? To jednoduše <br>nepůjde. VB (i jeho DLL) běží nad .Net frameworkem, pro nativní DLL se <br>tam musí dělat různé triky (p-invoke).<br>Proč to vůbec mícháte ? Doporučuji přejít na C#, netrápit se s C++, pak <br>lze využít všechny výhody managed prostředí (plno hotových tříd/objektů, <br>garbage collector, ...). Teoreticky by šly použít DLL z VB v programu v <br>C# a naopak, ale nevím, proč bych to dělal, když už dělám v C# :-)<br><br>Petr<br><br>Dne 17. 9. 2014 21:30, Pavel Hudeček napsal(a):<br>> Dobrý den všem,<br>><br>> Tak nejprve jsem měl DLL vytvořené v Builderu a testoval ho ve VB 2008.<br>> To fungovalo, jen když jsem v builderu nechal udělat 64b. No budiž.<br>><br>> Pak problém: komponeny Indy UDP negenerují události, pokud jsou v DLL.<br>><br>> Pak byla nedávná diskuse, jaké použít vývojové prostředí s C pro Win.<br>><br>> Stáhnul jsem instalačku Visual studia 2010 express a nainstaloval VB a VC.<br>><br>> Zjistil jsem, že VC nemůžu donutit, aby generovalo 64b kód.<br>><br>> Strávil jsem celý den různými marnými pokusy, až jsem se nakonec dobral<br>> k instalaci jakéhosi SDK, které způsobí, že se tam oběví kromě Win32 i<br>> možnosti x64 a Itanium.<br>><br>> Jenže od té doby zas veškeré pokusy o kompilaci čehokoli končily hláškou<br>> Error 'LINK : fatal error LNK1123: failure during conversion to COFF:<br>> file invalid or corrupt'<br>><br>> Nakonec jsem musel odinstalovat framework 4.5 a nainstalovat 4.<br>><br>> OK, nyní to kompiluje a i 64b.<br>><br>> Jenže jakákoli snaha o výrobu DLL ve VC++ a použití ve VB se míjí účinkem.<br>><br>> Když např. zkusím tuto ukázku:<br>> http://msdn.microsoft.com/cs-cz/library/ms235636.aspx<br>> tak vše funguje, program ve VC volá DLL psané též ve VC<br>><br>> Když totéž DLL zavolám z VB, jako jsem to dělal s tím DLL z Builderu,<br>> tedy s použitím Declare, skončí to chybou<br>> BadImageFormatException was unhandled<br>> (tato hláška mi vznikala i s Builderem, pokud buildil 32b)<br>><br>> OK, asi se DLL vytvořené v .NET musí volat jinak.<br>><br>> Našel jsem tuto ukázku:<br>> http://www.dreamincode.net/forums/topic/121314-creating-a-dll-and-using-it-in-your-application/<br>> vše funguje, program psaný ve VB volá DLL psané ve VB<br>><br>> Když jsem ovšem zkusil udělat program, kde stejným způsobem importuji<br>> DLL MathFuncs z té ukázky pro VC, import se nezdaří, zobrazí se msgbox s<br>> chybou:<br>> A reference 'C:\ ... .dll' could not be added. Please make sure that the<br>> file is acessible, and that it is valid assembly or COM component.<br>> A tato hláška se zobrazí při pokusu o import jakéhokoli jiného DLL než z<br>> té ukázky ve VB.<br>><br>> Tak teď už teda fakt nevim...<br>><br>> PH<br>><br>><br>><br>> _______________________________________________<br>> HW-list mailing list - sponsored by www.HW.cz<br>> Hw-list@list.hw.cz<br>> http://list.hw.cz/mailman/listinfo/hw-list<br>><br>_______________________________________________<br>HW-list mailing list - sponsored by www.HW.cz<br>Hw-list@list.hw.cz<br>http://list.hw.cz/mailman/listinfo/hw-list</blockquote></body></html>