Avatar billede thesurfer Nybegynder
22. september 2004 - 22:07 Der er 16 kommentarer og
2 løsninger

Begrænse afhængigheden af DLL filer (bl.a. MSVMVB60.dll)?

Hey folkens.

I Visual Basic fylder en exe typisk 20-30 kb. Det er fordi den bruger en (eller flere) ekstern(e) dll fil(er) (f.eks. "MSVMVB60.dll" som fylder lidt over 1 mb).

Det er helt fint, hvis DLL filen (f.eks. MSVMVB60.dll) er installeret på computeren. Ellers skal den jo også installeres..

- Er det muligt, at bruge netop den del af MSVMVB60.dll, som man bruger i sin kode? Dvs, kun de objekter/henvisninger/kode, som man bruger i programmet..

PS: Hvis spm'et er lidt uklart, spørg venligst.
Avatar billede hiks Nybegynder
22. september 2004 - 22:16 #1
hej

du tænker på om du kan inkludere MSVMVB60.dll i dit project i modul eller lign? For der er svaret nej!

Du kan lave en installationsfil vha de installerede programmer m. vb6 såsom: "Package & Deployment Wizard" - der findes andre programmer som er OpenSource som kan hjælpe til at distribuere dine .exe og .dell filer med.

/hiks
Avatar billede thesurfer Nybegynder
22. september 2004 - 22:24 #2
Jeg vil ikke inkludere MSVMVB60.dll ("DLL filen"), da den fylder lidt over 1 mb. Hvis en computer ikke har DLL filen installeret, skal denne installeres først, for at kunne bruge programmet.

Jeg ved at programmet HijackThis (bruges mod spyware) bruger DLL filen, og kan ikke startes op, uden at den er installeret/ligger i PATH/ligger i samme mappe som HijackThis-exe filen.
Men HijackThis bruger jo ikke *alle* koderne, som eksisterer i DLL filen.. kun noget af det..

Det kunne være, at den vigtige kode (den man bruger) kun fylder 200 kb, mens DLL filen er større end 1 mb.

Jeg har læst/hørt at WinAmp er lavet i Visual Basic, og at Nullsoft (firmaet bag WinAmp) bruger en eller anden metode, så de ikke behøver hele DLL filen.. måske har de bare programmeret alle objekterne/koderne..

- Kan man så (på en eller anden måde) inkludere den kode man selv bruger, og ikke andet?
Avatar billede hiks Nybegynder
22. september 2004 - 22:37 #3
så skal du vel på jagt efter sourcen til MSVMVB60.dll så du kan smide den i et modul.

/hiks
Avatar billede thesurfer Nybegynder
22. september 2004 - 22:42 #4
Jeg tror ikke at Microsoft vil af med kildekoden til DLL filen.. :-)

Håber på at der er andre, med andre ideer..
Avatar billede hiks Nybegynder
22. september 2004 - 23:05 #5
kiggede lige lidt videre og fandt noget i ms' knowledge base omkring dette og de skriver:

Redistribute minimum dependencies

The following files are the minimum dependencies that are required for any simple Visual Basic 6.0 application to function:

- Msvbvm60.dll
- Oleaut32.dll
- Olepro32.dll
- Asycfilt.dll
- Stdole2.tlb
- Comcat.dll

Jeg ved ikke om winAmp er skrevet i VB, men tjekkede den lige igennem med dependency walker og der er ikke nogen ref. til Msvbvm60.dll - så de har enten selv skrevet den del af koden som de skulle bruge for at inkludere den.

Linket til artiklen som også har henvisninger til masser af gode tools finder du her:

http://support.microsoft.com/default.aspx?scid=kb;en-us;830761

/hiks
Avatar billede thesurfer Nybegynder
22. september 2004 - 23:18 #6
Jeg takker mange gange.. jeg vil checke information engang i morgen.. sengetid.. :-)
Avatar billede sjh Nybegynder
23. september 2004 - 15:01 #7
Hvor har du læst/hørt at WinAmp er lavet i Visual Basic??
Avatar billede sjh Nybegynder
23. september 2004 - 15:03 #8
Det kan være at det er PowerBASIC men jeg kan næsten ikke tro at det er Visual Basic..
Avatar billede sjh Nybegynder
23. september 2004 - 15:08 #9
I min winamp ver.. står der..

  R6002
- floating point not loaded
    Microsoft Visual C++ Runtime Library

så må det vel være Microsoft Visual C++ ;)
Avatar billede thesurfer Nybegynder
23. september 2004 - 20:25 #10
Jeg kan ikke huske hvor jeg hørte det henne..

mht 22/09-2004 23:05:35, så har jeg ikke fået checket endnu.. får jeg muligvis først gjort på lørdag..

Jeg glemmer ikke spm'et..
Avatar billede sion Nybegynder
25. september 2004 - 15:19 #11
WinAmp er lavet i C og/eller C++, det er der ingen tvivl om.

Med hensyn til kun at medtage det kode fra dll'erne som du rent faktisk bruger, så nej det kan du ikke. Eller dvs. hvis funktionaliteten i "Msvbvm60.dll" var delt op i flere dll-filer så kunne du, men når det er én dll-fil bliver du nød til at tage det hele med, der er ingen omveje.

Hvis du er bekymret over størrelsen så kan du bruge UPX til at komprimere exe- og dll-filer med, uden hverken CPU eller memory overhead.
Link: http://upx.sourceforge.net/

Jeg har lige testet at komprimere "Msvbvm60.dll" med UPX. Størrelsen gik fra 1.354 KB til 699 KB ved komprimering. Jeg ved dog ikke om det er lovligt at gøre, når nu det er en Microsoft-dll.

Du kan også bruge InnoSetup til at installere med, og vælge den højest komprimering.
Link: http://www.jrsoftware.org/isinfo.php

Jeg er dog også i tvivl om det rent faktisk er lovligt at medtage en enkelt Microsoft dll i sin install, jeg tror måske man skal henvise til redist'en på MS's hjemmeside.
Avatar billede sjh Nybegynder
26. september 2004 - 16:10 #12
ha ha sjovt.. "HijackThis.exe" er også komprimeret med UPX. Hvis man pakker den ud fylder den 668 kB :D
Avatar billede thesurfer Nybegynder
27. september 2004 - 00:12 #13
hiks, sjh og sion> Smid venligst et svar hver.
Avatar billede thesurfer Nybegynder
27. september 2004 - 00:12 #14
OK, sion har allerede smidt et.. :-)
Avatar billede hiks Nybegynder
27. september 2004 - 08:41 #15
jamen så et svar herfra også...

/hiks
Avatar billede sjh Nybegynder
27. september 2004 - 08:58 #16
Jeg tror jeg springer over denne gang.. har fået point gennem det link sion kom med :D
Avatar billede sion Nybegynder
27. september 2004 - 21:06 #17
;)
Avatar billede thesurfer Nybegynder
28. september 2004 - 21:57 #18
Points er hermed uddelt.. hygge y'all :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester