Avatar billede friiiiis Novice
13. april 2014 - 15:10 Der er 5 kommentarer og
1 løsning

DLLImport

Hej,

Jeg importere en DLL fil i C# og det virker helt fantastisk. Men når jeg bruger DLLImport så er jeg låst til at DLL file SKAL ligge et bestemt sted - altså i en bestemt mappe... F.eks. skal DLL filen ligge i mappen "C:\Temp\" som anført herunder

Hvordan gør jeg det anderledes således at DLL enten

1) bliver importeret dynamisk når programmet starter op? På den måde definerer jeg hvor DLL filen er ved eksekvering af programmet
2) Selve definitionen af DLLImport ændres således at DLL filerne ligger i samme mappe som programmet der eksekveres...?

Måden jeg kalder DLL er:

        [DllImport(@"C:\Temp\XY.dll", CallingConvention = CallingConvention.Cdecl)]
        private static extern double enthalpy_pt(double Pressure, double Temperature);
Avatar billede arne_v Ekspert
13. april 2014 - 16:10 #1
Jeg tror at den mest bruge loesning er:

[DllImport("XY.dll", CallingConvention = CallingConvention.Cdecl)]

og XY.dll saa er i PATH.

Vi ved alle at den loesning har nogle problemer, men det er stadigt det mest brugte.
Avatar billede arne_v Ekspert
13. april 2014 - 16:17 #2
Den paene moderne loesning maa vaere at lave et manifest og angive det der.

Men manifest til dette er ikke saerligt udbredt saa det kan godt minde lidt som sort magi at faa det til at virke.
Avatar billede friiiiis Novice
14. april 2014 - 13:12 #3
ok - vil du lægge et svar??
Avatar billede friiiiis Novice
14. april 2014 - 13:40 #4
Hvorfor laver man i øvrigt ikke dynamisk indlæsning af DLL filer i C# ??

Der er ikke ret meget om det på nettet og det foregår via en besværlig "marshall" løsning??

Er der ikke en lettere løsning?
Avatar billede arne_v Ekspert
14. april 2014 - 15:51 #5
LoadLibrary og GetProcAddress?

Anders Hejlsberg ved hvorfor - jeg kan kun gaette paa hvorfor:

C# forsoeger at vaere rimeligt type safe.

LoadLibrary og GetProcAddress er ikke specielt type safe.
Avatar billede arne_v Ekspert
14. april 2014 - 15:52 #6
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