DLL i VB - Hvordan?!

Tags:    visual-basic

User
Bruger #368 @ 31.10.02 14:09
Jeg har prøvet at lave en DLL i vb, som virker fint hvis man laver en reference til den i de programmer der skal bruge den. Men hvis jeg så opdaterer den ved at ligge en ny DLL ind, så virker alle de programmer der bruger DLL'en ikke.
Så det jeg gerne vil vide er hvordan man kan bruge en funktion i en "hjemmelavet" DLL uden at lave en reference?

Håber i kan hjælpe!

mvh. Magnus Boye



5 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Jeg har prøvet at lave en DLL i vb, som virker fint hvis man laver en reference til den i de programmer der skal bruge den. Men hvis jeg så opdaterer den ved at ligge en ny DLL ind, så virker alle de programmer der bruger DLL'en ikke.
Så det jeg gerne vil vide er hvordan man kan bruge en funktion i en "hjemmelavet" DLL uden at lave en reference?

Håber i kan hjælpe!

mvh. Magnus Boye


Sørg for at den er registreret korrekt, og brug så "CreateObject()" i stedet for at bruge en
vb reference !

Så kan du bare køre der ud af, i det program der bruger dll'en uden at skulle re-kompilere
exe-filen hver gang dll'en ændre sig!

Men det er en god ide at sætte "Binary Compatibility", da du så ikke får bøvl med exe-filen
der skal bruge dll'en. Det kræver blodt at du ikke ændre i nogle interfaces! (funktions kald mm)


/Duplex


Brian er inde på noget rigtigt, men ikke helt... DU MÅ GERNE ændre i dine interfaces, men KUN så længe du tilføjer nye properties, methods, osv. Du må altså ikke ændre eksisterende interfaces, men koden inde i en rutine må du gerne ændre. Tilføjelse af funktioner m.m. er helt i orden. Ændring af kode inde i funktioner er også helt fint. Det eneste, du ikke må, hvis du vil opretholde bagud-kompatibilitet er at ændre navne på eksisterende funktioner, egenskaber, fjernelse af parametre, tilføjelse af parametre til eksisterende funktioner.

Men stress ikke over at finde ud af, hvad du kan og hvad du ikke kan; brug blot binær kompatibilitet; så vil VB advare dig, hvis der er noget galt. Prøv dig frem og kompiler ofte indtil du har en ide om, hvordan det virker.


Software is here and now but rock and roll is forever.



Jeg har prøvet at lave en DLL i vb, som virker fint hvis man laver en reference til den i de programmer der skal bruge den. Men hvis jeg så opdaterer den ved at ligge en ny DLL ind, så virker alle de programmer der bruger DLL'en ikke.
Så det jeg gerne vil vide er hvordan man kan bruge en funktion i en "hjemmelavet" DLL uden at lave en reference?

Håber i kan hjælpe!

mvh. Magnus Boye


Hej,

Husker du at registrer dll'en igen?

Hvis dll'en indeholder de samme funktioner, så burde programmerne virke med dll'en.

- Kim Pedersen



User
Bruger #368 @ 04.11.02 17:40
Jeg skulle mene at VB6 automatick registrerer DLL'en når den kompileres.

men jeg prøver dit råd...

mvh. Magnus Boye



Jeg har prøvet at lave en DLL i vb, som virker fint hvis man laver en reference til den i de programmer der skal bruge den. Men hvis jeg så opdaterer den ved at ligge en ny DLL ind, så virker alle de programmer der bruger DLL'en ikke.
Så det jeg gerne vil vide er hvordan man kan bruge en funktion i en "hjemmelavet" DLL uden at lave en reference?

Håber i kan hjælpe!

mvh. Magnus Boye


Hmm, du bør nok læse om binær versions-kompatibilitet, der er ret vigtigt med hensyn til ActiveX DLL'er. Dét, der sker i dit tilfælde, er, at første gang du kompilerer en DLL, skal markere den som havende "No Compatibility".

Når du så opdaterer DLL'en, må du sikre dig, at du har den foregående version et eller andet sted, og siden markere den nye version som havende "Binary Compatibility". Du skal så pege på den foregående version i dit VB project, så VB kan checke, at de er kompatible med hinande.

Hvis du følger disse retningslinjer, vil alle dine exsisterende programmer stadig virke med en ny DLL.

Lav et nyt VB DLL projekt, klik på Project\\Project1 Properties og klik siden på Component-fanebladet. I rammen Version Compatibility kan du indstille disse ting og sager.

For en splinterny DLL, marker No Compatibility og kompiler siden DLL'en. Før du kompilerer en update, skal du markere Binary Compatibility og siden pege på den forrige version av DLL'en. HUSK LIGE at gemme en kopi af hver eneste version separat i en eller anden mappe. Ellers kan du komme til at overskrive gamle versioner, når du kompilerer en ny.

Software is here and now but rock and roll is forever.



Jeg har prøvet at lave en DLL i vb, som virker fint hvis man laver en reference til den i de programmer der skal bruge den. Men hvis jeg så opdaterer den ved at ligge en ny DLL ind, så virker alle de programmer der bruger DLL'en ikke.
Så det jeg gerne vil vide er hvordan man kan bruge en funktion i en "hjemmelavet" DLL uden at lave en reference?

Håber i kan hjælpe!

mvh. Magnus Boye



Sørg for at den er registreret korrekt, og brug så "CreateObject()" i stedet for at bruge en
vb reference !

Så kan du bare køre der ud af, i det program der bruger dll'en uden at skulle re-kompilere
exe-filen hver gang dll'en ændre sig!

Men det er en god ide at sætte "Binary Compatibility", da du så ikke får bøvl med exe-filen
der skal bruge dll'en. Det kræver blodt at du ikke ændre i nogle interfaces! (funktions kald mm)


/Duplex



t