Zabava s VS .NET

Petr Weissar weissar na kae.zcu.cz
Středa Září 17 23:18:20 CEST 2014


Dobrý den,

nemícháte náhodou managed kód ve VB s klasickou DLL v C++ ? To jednoduše 
nepůjde. VB (i jeho DLL) běží nad .Net frameworkem, pro nativní DLL se 
tam musí dělat různé triky (p-invoke).
Proč to vůbec mícháte ? Doporučuji přejít na C#, netrápit se s C++, pak 
lze využít všechny výhody managed prostředí (plno hotových tříd/objektů, 
garbage collector, ...). Teoreticky by šly použít DLL z VB v programu v 
C# a naopak, ale nevím, proč bych to dělal, když už dělám v C# :-)

Petr

Dne 17. 9. 2014 21:30, Pavel Hudeček napsal(a):
> Dobrý den všem,
>
> Tak nejprve jsem měl DLL vytvořené v Builderu a testoval ho ve VB 2008.
> To fungovalo, jen když jsem v builderu nechal udělat 64b. No budiž.
>
> Pak problém: komponeny Indy UDP negenerují události, pokud jsou v DLL.
>
> Pak byla nedávná diskuse, jaké použít vývojové prostředí s C pro Win.
>
> Stáhnul jsem instalačku Visual studia 2010 express a nainstaloval VB a VC.
>
> Zjistil jsem, že VC nemůžu donutit, aby generovalo 64b kód.
>
> Strávil jsem celý den různými marnými pokusy, až jsem se nakonec dobral
> k instalaci jakéhosi SDK, které způsobí, že se tam oběví kromě Win32 i
> možnosti x64 a Itanium.
>
> Jenže od té doby zas veškeré pokusy o kompilaci čehokoli končily hláškou
> Error 'LINK : fatal error LNK1123: failure during conversion to COFF:
> file invalid or corrupt'
>
> Nakonec jsem musel odinstalovat framework 4.5 a nainstalovat 4.
>
> OK, nyní to kompiluje a i 64b.
>
> Jenže jakákoli snaha o výrobu DLL ve VC++  a použití ve VB se míjí účinkem.
>
> Když např. zkusím tuto ukázku:
> http://msdn.microsoft.com/cs-cz/library/ms235636.aspx
> tak vše funguje, program ve VC volá DLL psané též ve VC
>
> Když totéž DLL zavolám z VB, jako jsem to dělal s tím DLL z Builderu,
> tedy s použitím Declare, skončí to chybou
> BadImageFormatException was unhandled
> (tato hláška mi vznikala i s Builderem, pokud buildil 32b)
>
> OK, asi se DLL vytvořené v .NET musí volat jinak.
>
> Našel jsem tuto ukázku:
> http://www.dreamincode.net/forums/topic/121314-creating-a-dll-and-using-it-in-your-application/
> vše funguje, program psaný ve VB volá DLL psané ve VB
>
> Když jsem ovšem zkusil udělat program, kde stejným způsobem importuji
> DLL MathFuncs z té ukázky pro VC, import se nezdaří, zobrazí se msgbox s
> chybou:
> A reference 'C:\ ... .dll' could not be added. Please make sure that the
> file is acessible, and that it is valid assembly or COM component.
> A tato hláška se zobrazí při pokusu o import jakéhokoli jiného DLL než z
> té ukázky ve VB.
>
> Tak teď už teda fakt nevim...
>
> PH
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>


Další informace o konferenci Hw-list