Frage : Störung mit External-DLL

Ich benutze ein External-DLL und erhalte die folgende Störung:

Attempted zum zu lesen oder schreibgeschütztes Gedächtnis. Dieses ist häufig eine Anzeige, dass anderes Gedächtnis corrupt.

System.AccessViolationException war unhandled
Message= ist ", das versucht wird, um zu lesen oder write-protected Gedächtnis. Dieses ist häufig eine Anzeige, dass anderes Gedächtnis verdorben ist. „
Source= " OptoTest "
StackTrace:
OptoTest.Form1.OP930_GetTemperature (Double tempC, Maßeinheiten Int32) am
an OptoTest.Form1.btnTempGet_Click (Object Absender, EventArgs e) in C:\Documents and Settings\user\My-Dokumenten \ in Sichtstudio 2008 \ Projekte \ OptoTest \ OptoTest \ Form1.cs: Linie 102
an System.Windows.Forms.Control.OnClick (EventArgs e)
an System.Windows.Forms.Button.OnClick (EventArgs e)
System.Windows.Forms.Button.OnMouseUp (MouseEventArgs mevent) am
System.Windows.Forms.Control.WmMouseUp (Message& m, MouseButtons Knopf, Klicken Int32) am
an System.Windows.Forms.Control.WndProc (Message& m)
an System.Windows.Forms.ButtonBase.WndProc (Message& m)
an System.Windows.Forms.Button.WndProc (Message& m)
an System.Windows.Forms.Control. ControlNativeWindow.OnMessage (Message& m)
an System.Windows.Forms.Control. ControlNativeWindow.WndProc (Message& m)
System.Windows.Forms.NativeWindow.DebuggableCallback (IntPtr hWnd, Msg Int32, IntPtr wparam, IntPtr lparam) am
an System.Windows.Forms.UnsafeNativeMethods. DispatchMessageW (MSG& Msg)
an System.Windows.Forms.Application. ComponentManager. System.Windows.Forms. UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop (dwComponentID Int32, Int32, pvLoopData Int32)
an System.Windows.Forms.Application. ThreadContext.RunMessageLoopInner (Grund Int32, ApplicationContext Zusammenhang)
an System.Windows.Forms.Application. ThreadContext.RunMessageLoop (Int32 Grund, ApplicationContext Zusammenhang)
an System.Windows.Forms.Application. Run (Form mainForm)
an OptoTest.Program.Main () in C:\Documents and Settings\user\My-Dokumenten \ in Sichtstudio 2008 \ Projekte \ OptoTest \ OptoTest \ Program.cs: line 18
System.AppDomain. _nExecuteAssembly (/>ssembly a System.AppDomain.ExecuteAssembly (String assemblyFile, Beweis assemblySecurity, Schnur [] args) am
Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly () am
an System.Threading.ThreadHelper. ThreadStart_Context (Object Zustand)
System.Threading.ExecutionContext.Run (ExecutionContext executionContext, ContextCallback Wiederholungsbesuch, Objekt-Status) am
an System.Threading.ThreadHelper. ThreadStart ()
InnerException:

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

[DllImport („OP930M.DLL“)]
        privater statischer extern int OP930_GetTemperature (doppeltes tempC, int-Maßeinheiten);

        privates leeres btnTempGet_Click (Gegenstandabsender, EventArgs e)
        {
            doppelter Temp = 0.0;
            Status = OP930_GetTemperature (Temp, 1); //errors hier
            Label1.Text = Convert.ToString (Temp);
        }

Antwort : Störung mit External-DLL

Es sieht wie die Funktion Sie AR, welches das Benennen eine Temperatur nimmt aus, wandelt sie um und dann zurück führt es mich das gleiche Argument. Dieses würde anzeigen, dass das erste Argument wirklich ein Zeiger zu einem Doppelten anstelle von einem doppelten Wert ist. Versuchen, Ihre DLLImport Aussage zu ändern, um wie folgt, zu sein (den addierten Hinweis vor dem Doppelten merken):

[DllImport („OP930M.DLL“)]
        privater statischer extern int OP930_GetTemperature (Hinweis doppeltes tempC, int-Maßeinheiten);

Weitere Lösungen  
 
programming4us programming4us