Zabava s VS .NET
Pavel Hudeček
edizon na seznam.cz
Čtvrtek Září 18 13:42:50 CEST 2014
:-)
Tohle je zrovna z těch náročnějších, takže hodně paměti se hodí, ale hodně
velká rychlost taky. V ostrém provozu bude hlavním omezujícím faktorem
rychlost Gb ethernetu.
PH
Od: Marek Sembol <hwm.land na gmail.com>
Hlavne pro kompilaci do 64b z 99.999% neni duvod. 64b ma snad jedinou vyhodu
("nekonecnou" pamet), kterou vyuzije hodne maloktery program. Na druhe
strane kazda adresa je 64b => vetsi obsazenost cache => pomalejsi beh. Ja
vim, to pomalejsi je (zvlaste pro bezne aplikace) prakticky nemeritelen,
ale...
"
2014-09-18 13:01 GMT+02:00 <Halen na seznam.cz(mailto:Halen na seznam.cz)>:
"
Musíte kompilovat do 64b? Já bych se tomu vyhnul obloukem. Z vlastní
zkušenosti doporučuji kompilovat do 32 bit. Visual studio express standardně
nepodporuje kompilaci do x64 a další funkce (jako vytváření services)
Chybu by měl odstranit service pack 1 do Visual studia.
"
""
"
Od: Pavel Hudeček <edizon na seznam.cz(mailto:edizon na seznam.cz)>
"
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
(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/
(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...
"
"
"
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20140918/ab1f0524/attachment.html>
Další informace o konferenci Hw-list