Avatar billede challenge Praktikant
04. marts 2011 - 16:11 Der er 6 kommentarer og
1 løsning

Dynamisk DLL

Hej,

Jeg er i færd med (for første gang) at bruge DLL-filer i mine projekter. Jeg ønsker at linke mine DLL'er ved run-time, og det gør jeg også nemt med LoadLibrary og GetProcAddress.
Mit problem er nu blot, at jeg manuelt skal definere hvilken funktion fra DLL'en der skal defineres, eks.:
ProcAdd = (MYPROC) GetProcAddress(hinstLib, "myPuts");
Jeg ønsker imidlertid at kunne køre en for-loop der importerer alle funktioner fra DLL'en, der i princippet kan hedde hvad som helst. Hvorledes sørger jeg for dette?
Avatar billede arne_v Ekspert
04. marts 2011 - 16:31 #1
Det er der ikke en funktion til.

Du vil vaere noedt til at laese filen og parse manuelt.

Jeg ville nok lede efter alternative maader at loese problemet paa.

http://en.wikipedia.org/wiki/Portable_Executable

har under "External links" nogle gode referancer til formatet.
Avatar billede challenge Praktikant
04. marts 2011 - 17:33 #2
Jeg vil ikke modstride mig din viden, da jeg jo ved at den er bred og dyb, men hvis eks. Excel kan indlæse alle funktioner i en XLL/DLL når den loades (gennem en .def, så vidt jeg ved), hvorfor vil jeg da ikke kunne med mit simple eksempel? En XLL er jo trods alt stadig en DLL og udvikles som sådan.
Avatar billede arne_v Ekspert
04. marts 2011 - 18:05 #3
Jeg ved ikke hvordan en XLL goer det.

Jeg kan forestille mig to maader:

1) Excel laeser DLL filen og finder funktionerne som jeg beskrev ovenfor - det er lidt arbejde at kode, men da der formentligt er flere tusinde udviklere som arbejder paa Excel er det ikke et problem for Microsoft

2) de "snyder" og der er genereret en funktion med et kendt navn som returnerer en liste med navnene paa de andre funktioner
Avatar billede arne_v Ekspert
04. marts 2011 - 18:06 #4
Bemaek at COM faktisk goer det lidt ligesom #2.
Avatar billede challenge Praktikant
04. marts 2011 - 18:24 #5
OK. Mange tak - jeg tror umiddelbart, at metode nr. 2 vil virke godt. Smid et svar :)
Avatar billede arne_v Ekspert
04. marts 2011 - 18:32 #6
Det ser ioevrigt ud til at XLL ogsaa goer dette.

Jeg fandt lige:
  http://blogs.msdn.com/b/andreww/archive/2007/12/09/building-an-excel-xll-in-c-c-with-vs-2008.aspx
Avatar billede arne_v Ekspert
04. marts 2011 - 18:33 #7
og et svar
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

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