Gå til innhold

ActiveX DLL - Hvilke filer trenger jeg?


Anbefalte innlegg

Skrevet

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 :thumbup:

Videoannonse
Annonse
Skrevet

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.

Skrevet

@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?

Skrevet
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.
Skrevet

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.

Skrevet

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.

Skrevet

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;
}

Skrevet

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.

Skrevet

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.

Skrevet

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..

Skrevet

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 ;-)

Skrevet
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 ;-)

9334669[/snapback]

Det er det de så fint prøver å kalle "sikkerhet" :p

Skrevet
Det er det de så fint prøver å kalle "sikkerhet" :p

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.

Skrevet
....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

Skrevet
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...

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...