Vraag : fout met externe dll

Ik gebruik een externe dll en krijg de volgende fout:

Attempted om te lezen of te schrijven - beschermd geheugen. Dit is vaak een aanwijzing dat ander die geheugen corrupt.

System.AccessViolationException was unhandled
Message= " is wordt geprobeerd om te lezen of te schrijven - beschermd geheugen. Dit is vaak een aanwijzing dat ander geheugen corrupt is. „
Source= " OptoTest "
StackTrace:
bij OptoTest.Form1.OP930_GetTemperature (Double tempC, Int32)
bij OptoTest.Form1.btnTempGet_Click (Object afzender, EventArgs e) in C:\Documents and Settings\user\My Visuele Studio 2008 \- Projecten van Documenten \ \ OptoTest \ OptoTest \ Form1.cs: lijn 102
bij System.Windows.Forms.Control.OnClick (EventArgs e)
bij System.Windows.Forms.Button.OnClick (EventArgs e)
bij System.Windows.Forms.Button.OnMouseUp (mevent MouseEventArgs)
bij System.Windows.Forms.Control.WmMouseUp (Message& m, MouseButtons knoop, Int32 klikt)
bij System.Windows.Forms.Control.WndProc (Message& m)
bij System.Windows.Forms.ButtonBase.WndProc (Message& m)
bij System.Windows.Forms.Button.WndProc (Message& m)
bij System.Windows.Forms.Control. ControlNativeWindow.OnMessage (Message& m)
bij System.Windows.Forms.Control. ControlNativeWindow.WndProc (Message& m)
bij System.Windows.Forms.NativeWindow.DebuggableCallback (IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
bij System.Windows.Forms.UnsafeNativeMethods. DispatchMessageW (MSG& msg)
bij System.Windows.Forms.Application. ComponentManager. System.Windows.Forms. UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop (reden Int32 dwComponentID, Int32, pvLoopData Int32)
bij System.Windows.Forms.Application. ThreadContext.RunMessageLoopInner (reden Int32, context ApplicationContext)
bij System.Windows.Forms.Application. ThreadContext.RunMessageLoop (/>2 reden Int3 bij System.Windows.Forms.Application. Run (Vorm mainForm)
bij OptoTest.Program.Main () in C:\Documents and Settings\user\My Visuele Studio 2008 \- Projecten van Documenten \ \OptoTest \ OptoTest \ Program.cs: line 18
bij System.AppDomain. _nExecuteAssembly (de assemblage van Assembly, Koord [] args)
bij System.AppDomain.ExecuteAssembly (assemblyFile String, assemblySecurity van het Bewijsmateriaal, Koord [] args)
bij Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly ()
bij System.Threading.ThreadHelper. ThreadStart_Context (/> staat Object bij System.Threading.ExecutionContext.Run (callback ExecutionContext executionContext, ContextCallback, de staat van Objecten)
bij System.Threading.ThreadHelper. ThreadStart ()
InnerException:

" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
using System.Runtime.InteropServices;

[DllImport („OP930M.DLL“)]
        privé statisch extern int. OP930_GetTemperature (dubbele tempC, int.eenheden);

        privé nietige btnTempGet_Click (objecten afzender, EventArgs e)
        {
            dubbele temperaturen = 0.0;
            status = OP930_GetTemperature (temperaturen, 1); //errors hier
            Label1.Text = Convert.ToString (temperaturen);
        }

Antwoord : fout met externe dll

Het kijkt als de functie u AR het roepen een temperatuur vergt, het omzet en dan het achterI het zelfde argument overgaat. Dit zou erop wijzen dat het eerste argument eigenlijk een wijzer aan een dubbel in plaats van een dubbele waarde is. Probeer om uw verklaring te wijzigen DLLImport om als volgt (neem nota van toegevoegde ref vóór het dubbel) te zijn:

[DllImport („OP930M.DLL“)]
        privé statisch extern int. OP930_GetTemperature (ref dubbele tempC, int.eenheden);

Andere oplossingen  
 
programming4us programming4us