[ v.marko @ 24.07.2004. 08:04 ] @
problem je sledeci..pokusavam da napisem program za prenosni uredjaj koji ima ugradjen barkodskener..sa sajta proizvadjaca sam "skinuo" primer koriscenja barkod skenera kroz kod.
Uz projekat ide dll u kome se nalaze metode za koriscenje skenera
Otvorio sam projekat i regularno ga startovao u VS2003...

medjutim desava se:

Code:

An unhandled exception of type 'System.MissingMethodException' occurred in USICF.dll


i to kod poziva:

Code:

myUSI = new USICF.USIClass(this);


pogledao sam i objasnjenje System.MissingMethodException
i video da se desava kada program pokusava dinamicki pristupiti metodi koja ne postoji...

da li neko zna u cemu je problem???

[ v.marko @ 24.07.2004. 08:47 ] @
malo sam prevrnuo .net, video koriscenje dumpbin /EXPORT USICF.dll komande i za svoj dll nisam dobio ni jedan metod sto znaci da nijedan metod nije exportovan..pretpostavljam da zbog toga imam error..posto dll nisam ja radio nego ga samo koristim koja je metoda potrebna da npr. exportujem sve metode iz dll? zatim mogu da ih koristim? ili sam sve pogresno shvatio ???? :(

pod nogama gori
[ mmix @ 24.07.2004. 12:58 ] @
Svaki non-NET DLL mora da sadrži ili neke funkcije ili neke COM objekte (mada i u tom slučaju mora da exportuje funkcije DLLRegisterServer i DLLUnregisterServer). To što ti /exports ne vraća ništa znači da je taj DLL najverovatnije pure .NET Assembly, a tu ti dumpbin neće pomoći jer on ne ume da čita metadata.

Aktiviraj "Visual Studio .NET 2003 Command Prompt" iz menija za VS, i ukucaj komandu ILDASM, onda iz menija učitaj USICF.DLL i videćeš sve što se u njemu nalazi. Eventualno pogledaj da ti ne fali neki referencirani assembly (njihov spisak vidiš kroz ILDASM u stavci "M A N I F E S T", mada sumnjam da je to, puklo bi pre konstruktora.

Ono što ovde meni izgleda kao najverovatnija stvar je da je taj .NET assembly u stvari custom wrapper za COM objekat koji nisi registrovao i da puca pri late binding pozivanju neke metode bez provere da li se objekat instancirao (njihov bug). Pogledaj ponovo instalacionu proceduru, ili još bolje nađi neki COM primer za barcodes i vidi koji COM objekat se poziva pa nađi DLL i registruj ga sam sa regsvr32

Realno, najbolje bi bilo da imaš neki .NET decompiler tipa 9Rays.Spices pa da dekompajliraš USICF.DLL i vidiš koji kod je u konstruktoru koji puca.