14. januar 2010 - 10:29Der er
6 kommentarer og 1 løsning
Kan ikke få adgang til DLL
Har fået nogle DLL'er fra en leverandør som jeg skal bruge til at beregne deres produkter.
Jeg prøver så at oprette en reference til deres DLL, men Visual Studio melder at der ikke kan oprettes en reference til denne. Er det en valid assembly eller COM component.
Min umiddelbare tanke var at det var leverandøren der har leveret noget skidt, men nu er det anden gang og mistanken melder sig om det er mig der gør noget forkert.
Ifølge leverandørens dokumentation er DLL'erne skrevet i Borland Delphi Pascal 7 hvis det gør nogen forskel.
Hvorfor ikke spørge leverandøren? Vil hellere være til grin her end overfor leverandøren :P)
pinvoke siger at jeg ikke kan returnere varianter.
I dokumentationen for denne funktion siges det at argumenterne er
Input A LongInt B pChar C LongInt D Double
Output E Double F LongInt G Single H pChar
Funktions resultat LongInt
Jeg har så declared funktionen således
Declare Function MyFunc Lib "dllnavn.dll" Alias "Func" (ByVal A as Integer, Byval B as IntPtr, Byval C as Integer, Byval D as Double, ByRef E as Double, ByRef F as Integer, ByRef C as Single, ByRef H as IntPtr) as Integer
Nogen kommentarer ? Det må jo så være noget med typerne...
Declare Function CopyThresholds Lib "HHK44.DLL" _ (ByVal I_Flags As Long, ByVal I_Typ As String, ByVal I_CC As Long, _ ByVal I_Ref As String, ByVal I_T0 As Double, ByVal I_FI As Long, _ ByVal I_OP As Long, ByVal I_CR As Single, ByVal I_Range As Long, _ ByRef O_OP As Long, ByRef O_TCmin As Double, ByRef O_TCmax As Double, _ ByVal O_Err As String, ByRef O_SzErr As Long) As Long
Buffer variable in calling program:
Dim O_Err As String * 20
Umiddelbart burde dette være lige ud af landevejen, men jeg har (stadig) problemer. Dette er tydeligvis en ældre VB (6?) da .net ikke tillader streng definitionen. Jeg har således ændret den til
<VBFixedString(20)> Public O_Err As String
Men når jeg kalder får jeg at vide at der bliver skrevet i beskyttet hukommelse. Jeg har på fornemmelsen at det er den streng. Kunne ikke finde ud af at sætte fixed length i funktions deklarationen.
Er der i øvrigt nogen forskel på Long/Double/Single fra tidliger VB til .net ?
Lukker denne og starter en ny - emnet har skiftet og jeg tror ikke folk ser det - ingen svar i hvert fald på noget der burde være nogen der ved
Synes godt om
Ny brugerNybegynder
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.