Hayer Skrevet 20. august 2007 Skrevet 20. august 2007 Hei! Kompilerte nettopp en ActiveX DLL med VB 6, da ble jeg sittende med filene: *.dll *.lib *.exp Trenger jeg alle disse for å kunne bruke DLLen, eller trenger jeg bare å sende med *.dll filen? Takker for alle seriøse svar
backup Skrevet 20. august 2007 Skrevet 20. august 2007 Det er dll-fila du skal registrere i registeret (regsvr32.exe) om det er det du tenker på. Her har du et eksempel med et vbs-script der jeg bruker en dll-fil som skriver og leser tekst i forhold til clipboard. Set f = CreateObject ("dllProject.clip") f.TextToClipboard("ole dole doffen") MsgBox(f.TextFromClipboard) dllProject er prosjektnavnet til vb ActiveX dll project, clip er navnet på klassemodulen og TextToClipboard og TextFromClipboard er to public function i klassemodulen.
serverside Skrevet 20. august 2007 Skrevet 20. august 2007 http://filext.com/file-extension/ext http://filext.com/file-extension/lib http://filext.com/file-extension/dll
Hayer Skrevet 21. august 2007 Forfatter Skrevet 21. august 2007 @serverside Skjønte jeg ikke så mye av... @backup Jeg har laget en DLL med VB 6, å lurer på om jeg må sende med alle filene kompilatoren lagde for at den skal funke.. Eller trenger jeg bare å sende .dll filen?
aadnk Skrevet 21. august 2007 Skrevet 21. august 2007 Eller trenger jeg bare å sende .dll filen? 9328908[/snapback] Selv har jeg aldri hatt behov for de øvrige filene under distribusjonen, men det kan jo ikke skade å ta dem med alle sammen.
backup Skrevet 21. august 2007 Skrevet 21. august 2007 Det stemmer det aadnk sier, kun dll-fila er nødvendig! Den kan legges i hvilken mappe som helst og så bruker du regsvr32.exe for å få den registrert. Nå kan du for eksempel bruke den som jeg ovenfor har angitt.
Hayer Skrevet 21. august 2007 Forfatter Skrevet 21. august 2007 @backup Først, takk for raske svar! Hvor finder jeg regsvr32.exe og hvordan bruker jeg den?
backup Skrevet 21. august 2007 Skrevet 21. august 2007 regsvr32.exe finner du i system32-mappa. Slik bruker du den: I kjørboksen taster du inn slik: regsvr32.exe "C:\Documents and Settings\Eier\Mine dokumenter\minedll\print.dll" og klikker så ok. I dette eksempel har jeg registrert print.dll som ligger i mappa minedll. Merk anførselstegna rundt filreferansen, fordi den innholder ordmellomrom.
Hayer Skrevet 21. august 2007 Forfatter Skrevet 21. august 2007 Prøvde det nå på denne DLL som jeg skrev i C++. Er ikke god i C++, men programmet som skal bruke den tar bare imot c++ dll'er... Da fikk jeg feilmeldingen: "(path) was loaded, but the DllRegisterServer entry point was not found. This file can not be registred." Her er koden til DLLen, sikkert der feilen ligger #include "stdafx.h" #include <math.h> BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } Pluss(int x, int y) { return x+y; }
Hayer Skrevet 21. august 2007 Forfatter Skrevet 21. august 2007 vet det, oppdaget at programmet jeg skrev DLLen for ikke likte VB 6 DLLer. Hvordan gjør jeg det med C++ DLLer? Unnskyld at jeg ikke sa fra om det, er litt stresset og som vanlig dum.
GeirGrusom Skrevet 21. august 2007 Skrevet 21. august 2007 Det er stor forskjell på C++ Dll-er og VB 6 (ActiveX) DLL-er Man kan skrive ActiveX dll-er i C++ ved å bruke COM+ veiviseren, da steller Visual C++ alt i stand for å skrive COM+ DLL-er. Vært obs på at det er mye å lære seg, som MIDL og slikt.
Hayer Skrevet 21. august 2007 Forfatter Skrevet 21. august 2007 Formelerte meg sikkert litt dårlig, men det programmet ikke likte(Det som skal bruke DLLen)var at det var en ActiveX DLL. Kompilerte en DLL nå(med koden over) og fikk: Math.dll Math.ilk Math.obj Math.pch Math.pdb StdAfx.obj vc60.idb vc60.pdb Hva trenger jeg alle de til? Språket jeg prøver å kalle DLLen med heter Dark Basic Pro, og her er koden jeg har brukt i Dark Basic Pro(DBP) load dll "Math Lib.dll", 1 svar = call dll(1, "Pluss", 6,6) print svar wait key Ser ikke noen feil på DBP siden..
GeirGrusom Skrevet 21. august 2007 Skrevet 21. august 2007 Eksporterer du noen funksjoner? det gjøres med __declspec(dllexport) i definisjonen.
HDSoftware Skrevet 22. august 2007 Skrevet 22. august 2007 Bare en kommentar til tråden Hvis du/kunden bruker Vista så må man være pålogget som administrator for å få registrert med Regsvr32. Det holder ikke at man er medlem av administrators. Man må faktisk være pålogget SOM administrator. Jeg sleit skikkelig med dette fordi jeg skulle registrere en OCX for å komuisere med en kortleser. Dette lot seg ikek gjøre og ingen kunne svare meg. Så jeg ga vel egentlig opp og fortsatte med XP. Etter et halvt års tid bestemte jeg meg for å gå over til Vista og glemte hele problemstillingen, noe jeg smertelig fikk erfare, men da bestemte jeg meg for ikke å gi opp. Fant helt tilfeldig ut at hvis man var pålogget som administrator så blei OCX'en registrert. Bare så dere veit det ;-)
Manfred Skrevet 22. august 2007 Skrevet 22. august 2007 Bare en kommentar til trådenHvis du/kunden bruker Vista så må man være pålogget som administrator for å få registrert med Regsvr32. Det holder ikke at man er medlem av administrators. Man må faktisk være pålogget SOM administrator. Jeg sleit skikkelig med dette fordi jeg skulle registrere en OCX for å komuisere med en kortleser. Dette lot seg ikek gjøre og ingen kunne svare meg. Så jeg ga vel egentlig opp og fortsatte med XP. Etter et halvt års tid bestemte jeg meg for å gå over til Vista og glemte hele problemstillingen, noe jeg smertelig fikk erfare, men da bestemte jeg meg for ikke å gi opp. Fant helt tilfeldig ut at hvis man var pålogget som administrator så blei OCX'en registrert. Bare så dere veit det ;-) 9334669[/snapback] Det er det de så fint prøver å kalle "sikkerhet"
j000rn Skrevet 22. august 2007 Skrevet 22. august 2007 Det er det de så fint prøver å kalle "sikkerhet" 9334937[/snapback] Jeg syntes det er genialt. Særlig for utviklere. Det gir en veldig enkel og grei måte å faktisk teste ut ting uten å være administrator. Samtidig som man har fordelene med å "være administrator" ved å veldig enkelt høyreklikke og "run as administrator" - eller får opp dialogboksen "Windows needs your confirmation to continue". I tillegg kan man sjekke hva som skjer om brukeren ikke er administrator ved å velge "Cancel" i denne. I XP måtte man enten lage 2 brukere og logge av/på hele tiden for å teste... Eller bruke tungvinne runas.exe.
HDSoftware Skrevet 22. august 2007 Skrevet 22. august 2007 ....Samtidig som man har fordelene med å "være administrator" ved å veldig enkelt høyreklikke og "run as administrator" - eller får opp dialogboksen "Windows needs your confirmation to continue"... Hadde verden bare vert så enkel du :-) Greia er at jeg faktisk måtte logge meg PÅ som administrator. "Run as" funker ikke i dette tilfellet. Men generelt sett er jeg veldig enig med deg i dette. Ole
j000rn Skrevet 22. august 2007 Skrevet 22. august 2007 Hadde verden bare vert så enkel du :-)Greia er at jeg faktisk måtte logge meg PÅ som administrator. "Run as" funker ikke i dette tilfellet. Men generelt sett er jeg veldig enig med deg i dette. Ole 9335665[/snapback] Det ER så enkelt. Jeg gjorde det selv for 1 minutt siden nå for å teste. høyreklikk på cmd.exe - "start as admin". REGSVR32 mindll.dll Mulig det er noe som har blitt fikset i nyere oppdateringer, men som har vært et problem tidligere...
HDSoftware Skrevet 22. august 2007 Skrevet 22. august 2007 (endret) HAHA! Smart workaround. /me følger ikke med i timen Endret 22. august 2007 av HDSoftware
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå