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