02. februar 2001 - 12:51Der er
9 kommentarer og 1 løsning
registrering af dll
Jeg er ved at lave en dll indeholdene nogle funktioner til at læse/skrive i binære filer. Funktionerne skal jeg bruge til noget ASP (ASP understøøter som default ikke håndtering af andet end tekst filer) så derfor skal de registreres på webserveren (win2000).
Det er første gang jeg arbejder med dll\'er så jeg har lavet en simpel test:
library BinReadFile;
function ReadByte(byteno : integer) : byte; stdcall; begin result := $10; end;
exports ReadByte;
end.
- men når jeg prøver at registrere den på serveren (via regsrv32) får jeg følgende fejl:
\"binreadfile.dll was loaded, but the DllRegisterServer entry point was not found.\"
skal jeg på nogen måde fortælle hvordan og hvad der skal registreres i dll\'en ?
Jeg aner ikke altverden om ASP/Web-server plugings, men ud fra et COM synspunkt så skal din DLL indeholde et \"DllRegisterServer entry point\". Hvordan har du lavet din DLL? Hvis du har lavet den som en \"almindelig\" DLL så tror jeg ikke du får det til at virke. I Delpyi (5 Enterprise) har du et punkt til dette formuål under: File->New->ActiveX->Active Server Object (alt andet lige må den sørge for at du får alt med ?)
Du skal ikke registrere en almindelig DLL - fx. vil et C++ program der benytter en alm. procedure i en Delphi DLL være totalt ligeglad med om DLL\'en er registreret eller ej. Registrering af DLL\'er er noget man gør, hvis den pågældende DLL er en COM server. Som du selv er inde på, så bruger man regsrv32 til at foretage registreringen. Du kan dog også prøve at tage et kig i programmet TRegSvr.exe der følger med Delphi. Source koden til det program finder du på din harddisk i biblioteket Delphi5\\Demos\\Activex\\Tregsvr. Programmet kan give dig et hip om hvad det er der sker.
Det er så fordi den bliver brugt som ActiveX/Com server.
I øvrigt for at svare på spørsgmålet om hvad der skal til for at en DLL kan registreres: DLL\'en skal indeholde følgende eksports:
exports DLLGetClassObject; DLLCanUnloadNow; // Jeg er lidt i tvivl om den her. DLLRegisterServer; DLLUnRegisterServer; // se\'følig ikke til registrering, meeeennn...
Se\'følig. Jeg ville aldrig lave det fodarbejde selv, når nu Borland har gjort det for os. Det var mere fordi tknudsen og spørger om hvad der skal registreres. Iøvrigt kan jeg trykt henvise til:
\"Delphi COM programming\" af Eric Harmon (ISBN: 1-57870-221-6). Den hoved fokus på Delphi 5, men går dog tilbage til Delphi-COM starten i Delphi 3 hvis der er forskelle i implementationen. \"Delphi COM programming\" er små 500 sider koncentreret COM stof.
Calvert og Cantú skriver også noget om COM og Automation i deres bøger, henholdsvis \"Delphi Unleashed\" serien \"Mastering Delhi\". De viser dog kun lidt af emnet, idet de som praktisk eksempeler arbejder lidt med automation af Word/Excel. En anden ting er at deres bøger dækker hele Delphi og dermed er der ikke meget plads til COM.
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.